diff --git a/CHANGELOG.md b/CHANGELOG.md index 98481ac3a..76c794ded 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ NOTE: As semantic versioning states all 0.y.z releases can contain breaking chan ### Added - [#4](https://github.com/kobsio/kobs/pull/4): Add Custom Resource Definition for Applications. +- [#6](https://github.com/kobsio/kobs/pull/6): Add Prometheus as datasource for Application metrics. ### Fixed diff --git a/Makefile b/Makefile index 7da8248d6..ace03e2b7 100644 --- a/Makefile +++ b/Makefile @@ -20,11 +20,14 @@ generate: generate-proto generate-crd .PHONY: generate-proto generate-proto: @protoc --proto_path=proto --go_out=pkg/generated/proto --go_opt=paths=source_relative --go-grpc_out=pkg/generated/proto --go-grpc_opt=paths=source_relative --deepcopy_out=pkg/generated/proto --js_out=import_style=commonjs:app/src/generated/proto --plugin=protoc-gen-ts=app/node_modules/.bin/protoc-gen-ts --ts_out=service=grpc-web:app/src/generated/proto --grpc-web_out=import_style=commonjs,mode=grpcwebtext:app/src/generated/proto proto/clusters.proto - @protoc --proto_path=proto --go_out=pkg/generated/proto --go_opt=paths=source_relative --go-grpc_out=pkg/generated/proto --go-grpc_opt=paths=source_relative --deepcopy_out=pkg/generated/proto --js_out=import_style=commonjs:app/src/generated/proto --plugin=protoc-gen-ts=app/node_modules/.bin/protoc-gen-ts --ts_out=service=grpc-web:app/src/generated/proto --grpc-web_out=import_style=commonjs,mode=grpcwebtext:app/src/generated/proto proto/applications.proto + @protoc --proto_path=proto --go_out=pkg/generated/proto --go_opt=paths=source_relative --go-grpc_out=pkg/generated/proto --go-grpc_opt=paths=source_relative --deepcopy_out=pkg/generated/proto --js_out=import_style=commonjs:app/src/generated/proto --plugin=protoc-gen-ts=app/node_modules/.bin/protoc-gen-ts --ts_out=service=grpc-web:app/src/generated/proto --grpc-web_out=import_style=commonjs,mode=grpcwebtext:app/src/generated/proto proto/datasources.proto + @protoc --proto_path=proto --go_out=pkg/generated/proto --go_opt=paths=source_relative --go-grpc_out=pkg/generated/proto --go-grpc_opt=paths=source_relative --deepcopy_out=pkg/generated/proto --js_out=import_style=commonjs:app/src/generated/proto --plugin=protoc-gen-ts=app/node_modules/.bin/protoc-gen-ts --ts_out=service=grpc-web:app/src/generated/proto --grpc-web_out=import_style=commonjs,mode=grpcwebtext:app/src/generated/proto proto/application.proto @rm -rf ./pkg/generated/proto/clusters_deepcopy.gen.go - @rm -rf ./pkg/generated/proto/applications_deepcopy.gen.go + @rm -rf ./pkg/generated/proto/datasources_deepcopy.gen.go + @rm -rf ./pkg/generated/proto/application_deepcopy.gen.go @mv ./pkg/generated/proto/github.com/kobsio/kobs/pkg/generated/proto/clusters_deepcopy.gen.go ./pkg/generated/proto - @mv ./pkg/generated/proto/github.com/kobsio/kobs/pkg/generated/proto/applications_deepcopy.gen.go ./pkg/generated/proto + @mv ./pkg/generated/proto/github.com/kobsio/kobs/pkg/generated/proto/datasources_deepcopy.gen.go ./pkg/generated/proto + @mv ./pkg/generated/proto/github.com/kobsio/kobs/pkg/generated/proto/application_deepcopy.gen.go ./pkg/generated/proto @rm -rf ./pkg/generated/proto/github.com .PHONY: generate-crd diff --git a/app/package.json b/app/package.json index f01d32f78..5e1c51df7 100644 --- a/app/package.json +++ b/app/package.json @@ -23,9 +23,36 @@ ], "rules": { "react-hooks/exhaustive-deps": "error", - "sort-imports": ["error", {"ignoreCase": false, "ignoreDeclarationSort": false, "ignoreMemberSort": false, "memberSyntaxSortOrder": ["none", "all", "multiple", "single"], "allowSeparatedGroups": true}], - "sort-keys": ["error", "asc", {"caseSensitive": true, "natural": false, "minKeys": 2}], - "sort-vars": ["error", { "ignoreCase": false }], + "sort-imports": [ + "error", + { + "ignoreCase": false, + "ignoreDeclarationSort": false, + "ignoreMemberSort": false, + "memberSyntaxSortOrder": [ + "none", + "all", + "multiple", + "single" + ], + "allowSeparatedGroups": true + } + ], + "sort-keys": [ + "error", + "asc", + { + "caseSensitive": true, + "natural": false, + "minKeys": 2 + } + ], + "sort-vars": [ + "error", + { + "ignoreCase": false + } + ], "@typescript-eslint/explicit-function-return-type": "error", "@typescript-eslint/no-empty-function": "error", "@typescript-eslint/no-empty-interface": "error", @@ -35,12 +62,61 @@ "@typescript-eslint/no-use-before-define": "off", "@typescript-eslint/naming-convention": [ "error", - {"format": ["camelCase"], "selector": "default", "leadingUnderscore": "forbid", "trailingUnderscore": "forbid"}, - {"format": ["camelCase", "UPPER_CASE", "PascalCase"], "selector": "variable", "leadingUnderscore": "forbid", "trailingUnderscore": "forbid"}, - {"format": ["camelCase", "UPPER_CASE", "PascalCase"], "selector": "property", "leadingUnderscore": "forbid", "trailingUnderscore": "forbid"}, - {"format": ["PascalCase"], "selector": "interface", "leadingUnderscore": "forbid", "trailingUnderscore": "forbid", "prefix": ["I"]}, - {"format": ["PascalCase"], "selector": "typeAlias", "leadingUnderscore": "forbid", "trailingUnderscore": "forbid"}, - {"format": ["PascalCase"], "selector": "typeParameter", "leadingUnderscore": "forbid", "trailingUnderscore": "forbid"} + { + "format": [ + "camelCase" + ], + "selector": "default", + "leadingUnderscore": "forbid", + "trailingUnderscore": "forbid" + }, + { + "format": [ + "camelCase", + "UPPER_CASE", + "PascalCase" + ], + "selector": "variable", + "leadingUnderscore": "forbid", + "trailingUnderscore": "forbid" + }, + { + "format": [ + "camelCase", + "UPPER_CASE", + "PascalCase" + ], + "selector": "property", + "leadingUnderscore": "forbid", + "trailingUnderscore": "forbid" + }, + { + "format": [ + "PascalCase" + ], + "selector": "interface", + "leadingUnderscore": "forbid", + "trailingUnderscore": "forbid", + "prefix": [ + "I" + ] + }, + { + "format": [ + "PascalCase" + ], + "selector": "typeAlias", + "leadingUnderscore": "forbid", + "trailingUnderscore": "forbid" + }, + { + "format": [ + "PascalCase" + ], + "selector": "typeParameter", + "leadingUnderscore": "forbid", + "trailingUnderscore": "forbid" + } ] } }, @@ -66,6 +142,7 @@ "dependencies": { "@kubernetes/client-node": "^0.13.2", "@patternfly/patternfly": "^4.80.3", + "@patternfly/react-charts": "^6.14.2", "@patternfly/react-core": "^4.90.2", "@patternfly/react-table": "^4.20.15", "@types/google-protobuf": "^3.7.4", diff --git a/app/src/App.tsx b/app/src/App.tsx index c6b4985f4..f820d2226 100644 --- a/app/src/App.tsx +++ b/app/src/App.tsx @@ -5,6 +5,7 @@ import React from 'react'; import '@patternfly/react-core/dist/styles/base.css'; import '@patternfly/patternfly/patternfly.css'; import '@patternfly/patternfly/patternfly-addons.css'; +import '@patternfly/patternfly/patternfly-charts.css'; import Application from 'components/applications/Application'; import Applications from 'components/applications/Applications'; diff --git a/app/src/app.css b/app/src/app.css index 63e0cfade..e24e04ba0 100644 --- a/app/src/app.css +++ b/app/src/app.css @@ -48,3 +48,55 @@ .kobsio-pagesection-toolbar .pf-c-toolbar__content { padding: 0px; } + +/* kobsio-pagesection-tabs + * This is used if we display tabs at the bottom of a PageSection component, to remove the padding. This allows us to + * align the tabs line with the end of the PageSection. */ +.kobsio-pagesection-tabs { + padding-bottom: 0px; +} + +/* kobs-fullwidth + * We often need to modify the width of elements, so that they are taken the full width of the parent. For example to + * display an item in the toolbar, which is aligned on the right side. For that the following class can be used. */ +.kobs-fullwidth { + width: 100%; +} + +/* kobsio-options-list-item + * Apply some padding between the list items for smaller screens. */ +.kobsio-options-list-item { + padding-bottom: 16px; +} + +/* kobsio-charts-grid + * Apply some marging on the top of the charts grid. */ +.kobsio-charts-grid { + margin-top: 16px; +} + +/* kobsio-chart-container + * Set the width and height for a chart. The width and height is applied to the chart container and then used via + * useRef within the chart. */ +.kobsio-chart-container-default { + width: 100%; + height: 300px; +} + +.kobsio-chart-container-sparkline { + width: 100%; + height: 150px; + position: relative; +} + +.kobsio-chart-container-sparkline.small { + height: 75px; +} + +.kobsio-chart-container-sparkline-value { + width: 100%; + top: 63px; + font-size: 24px; + position: absolute; + text-align: center +} diff --git a/app/src/components/applications/Application.tsx b/app/src/components/applications/Application.tsx index fd05c717c..2d68c2ea1 100644 --- a/app/src/components/applications/Application.tsx +++ b/app/src/components/applications/Application.tsx @@ -16,8 +16,9 @@ import { Link, useHistory, useParams } from 'react-router-dom'; import React, { useCallback, useEffect, useRef, useState } from 'react'; import { GetApplicationRequest, GetApplicationResponse } from 'generated/proto/clusters_pb'; -import { Application } from 'generated/proto/applications_pb'; +import { Application } from 'generated/proto/application_pb'; import { ClustersPromiseClient } from 'generated/proto/clusters_grpc_web_pb'; +import Metrics from 'components/applications/details/metrics/Metrics'; import Resources from 'components/applications/details/resources/Resources'; import Title from 'components/shared/Title'; import { apiURL } from 'utils/constants'; @@ -40,6 +41,7 @@ const Applications: React.FunctionComponent = () => { const [error, setError] = useState(''); const [activeTabKey, setActiveTabKey] = useState('resources'); const refResourcesContent = useRef(null); + const refMetricsContent = useRef(null); const goToOverview = (): void => { history.push('/'); @@ -98,7 +100,7 @@ const Applications: React.FunctionComponent = () => { return ( - + { tabContentId="refResources" tabContentRef={refResourcesContent} /> + <Tab + eventKey="metrics" + title={<TabTitleText>Metrics</TabTitleText>} + tabContentId="refMetrics" + tabContentRef={refMetricsContent} + /> </Tabs> </PageSection> <PageSection variant={PageSectionVariants.default}> - <TabContent eventKey={0} id="refResources" ref={refResourcesContent} aria-label="Resources"> - <Resources application={application} /> + <TabContent eventKey="resources" id="refResources" ref={refResourcesContent} aria-label="Resources"> + <div> + <Resources application={application} /> + </div> + </TabContent> + <TabContent eventKey="metrics" id="refMetrics" ref={refMetricsContent} aria-label="Metrics"> + {/* We have to check if the refMetricsContent is not null, because otherwise the Metrics component will be shown below the resources component. */} + <div>{refMetricsContent.current ? <Metrics application={application} /> : null}</div> </TabContent> </PageSection> </React.Fragment> diff --git a/app/src/components/applications/Applications.tsx b/app/src/components/applications/Applications.tsx index 69fa8adc5..adf2420b3 100644 --- a/app/src/components/applications/Applications.tsx +++ b/app/src/components/applications/Applications.tsx @@ -14,8 +14,8 @@ import React, { useState } from 'react'; import { GetApplicationsRequest, GetApplicationsResponse } from 'generated/proto/clusters_pb'; import { apiURL, applicationsDescription } from 'utils/constants'; -import { Application } from 'generated/proto/applications_pb'; -import Card from 'components/applications/details/Card'; +import { Application } from 'generated/proto/application_pb'; +import Card from 'components/applications/overview/Card'; import { ClustersPromiseClient } from 'generated/proto/clusters_grpc_web_pb'; import DrawerPanel from 'components/applications/details/DrawerPanel'; import Filter from 'components/resources/shared/Filter'; diff --git a/app/src/components/applications/details/Card.tsx b/app/src/components/applications/details/Card.tsx deleted file mode 100644 index 3abed08c8..000000000 --- a/app/src/components/applications/details/Card.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { CardBody, CardTitle, Card as PatternflyCard } from '@patternfly/react-core'; -import React from 'react'; - -import { Application } from 'generated/proto/applications_pb'; - -interface ICardProps { - application: Application; - select: (application: Application) => void; -} - -// Card displays a single application within the Applications gallery. The component requires the application and a -// select function as props. The select function is called, when the user clicks on the card. In the applications pages, -// this will then open the drawer with the selected application. -const Card: React.FunctionComponent<ICardProps> = ({ application, select }: ICardProps) => { - return ( - <PatternflyCard isSelectable={true} onClick={(): void => select(application)}> - <CardTitle>{application.getName()}</CardTitle> - <CardBody> - {application.getCluster()} {application.getNamespace()} - </CardBody> - </PatternflyCard> - ); -}; - -export default Card; diff --git a/app/src/components/applications/details/DrawerPanel.tsx b/app/src/components/applications/details/DrawerPanel.tsx index 2e10b60f2..054556ba2 100644 --- a/app/src/components/applications/details/DrawerPanel.tsx +++ b/app/src/components/applications/details/DrawerPanel.tsx @@ -14,7 +14,8 @@ import { import React, { useState } from 'react'; import { Link } from 'react-router-dom'; -import { Application } from 'generated/proto/applications_pb'; +import { Application } from 'generated/proto/application_pb'; +import Metrics from 'components/applications/details/metrics/Metrics'; import Resources from 'components/applications/details/resources/Resources'; import Title from 'components/shared/Title'; @@ -66,7 +67,14 @@ const DrawerPanel: React.FunctionComponent<IDrawerPanelProps> = ({ application, onSelect={(event, tabIndex): void => setActiveTabKey(tabIndex.toString())} > <Tab eventKey="resources" title={<TabTitleText>Resources</TabTitleText>}> - <Resources application={application} /> + <div> + <Resources application={application} /> + </div> + </Tab> + <Tab eventKey="metrics" title={<TabTitleText>Metrics</TabTitleText>}> + <div> + <Metrics application={application} /> + </div> </Tab> </Tabs> </DrawerPanelBody> diff --git a/app/src/components/applications/details/metrics/Chart.tsx b/app/src/components/applications/details/metrics/Chart.tsx new file mode 100644 index 000000000..b2741593d --- /dev/null +++ b/app/src/components/applications/details/metrics/Chart.tsx @@ -0,0 +1,112 @@ +import { Alert, AlertActionLink, AlertVariant, Card, CardBody, CardTitle } from '@patternfly/react-core'; +import React, { useCallback, useEffect, useState } from 'react'; + +import { DatasourceMetrics, GetMetricsRequest, GetMetricsResponse } from 'generated/proto/datasources_pb'; +import { + IApplicationMetricsVariable, + IDatasourceOptions, + convertApplicationMetricsVariablesToProto, + convertDatasourceOptionsToProto, +} from 'utils/proto'; +import { ApplicationMetricsChart } from 'generated/proto/application_pb'; +import { DatasourcesPromiseClient } from 'generated/proto/datasources_grpc_web_pb'; +import DefaultChart from 'components/applications/details/metrics/charts/Default'; +import EmptyStateSpinner from 'components/shared/EmptyStateSpinner'; +import SparklineChart from 'components/applications/details/metrics/charts/Sparkline'; +import { apiURL } from 'utils/constants'; + +const datasourcesService = new DatasourcesPromiseClient(apiURL, null, null); + +interface IChartProps { + datasourceName: string; + datasourceOptions: IDatasourceOptions; + variables: IApplicationMetricsVariable[]; + chart: ApplicationMetricsChart; +} + +// Chart component is used to fetch the data for an chart and to render the chart within a Card component. +const Chart: React.FunctionComponent<IChartProps> = ({ + datasourceName, + datasourceOptions, + variables, + chart, +}: IChartProps) => { + const [data, setData] = useState<DatasourceMetrics[]>([]); + const [error, setError] = useState<string>(''); + + // fetchData fetchs the data for a chart. If the gRPC call returns an error, we catch the error and set the + // corresponding error state. + const fetchData = useCallback(async () => { + try { + if (datasourceName !== '' && chart.getQueriesList().length > 0) { + const getMetricsRequest = new GetMetricsRequest(); + getMetricsRequest.setName(datasourceName); + getMetricsRequest.setOptions(convertDatasourceOptionsToProto(datasourceOptions)); + getMetricsRequest.setVariablesList(convertApplicationMetricsVariablesToProto(variables)); + getMetricsRequest.setQueriesList(chart.getQueriesList()); + + const getMetricsResponse: GetMetricsResponse = await datasourcesService.getMetrics(getMetricsRequest, null); + + setData(getMetricsResponse.getMetricsList()); + setError(''); + } + } catch (err) { + setError(err.message); + } + }, [datasourceName, datasourceOptions, variables, chart]); + + useEffect(() => { + fetchData(); + }, [fetchData]); + + // If an error occured during the gRPC call we show the error message in the card body. + if (error) { + return ( + <Card isFlat={true}> + <CardTitle>{chart.getTitle()}</CardTitle> + <CardBody> + <Alert + variant={AlertVariant.danger} + isInline={true} + title="Could not get metrics" + actionLinks={ + <React.Fragment> + <AlertActionLink onClick={fetchData}>Retry</AlertActionLink> + </React.Fragment> + } + > + <p>{error}</p> + </Alert> + </CardBody> + </Card> + ); + } + + // If the data length is zero, we show the empty state component with a spinner, because this only can happen on the + // first render. When the fetchData all was executed the data must be set or the error will be rendered befor this. + if (data.length === 0) { + return ( + <Card isFlat={true}> + <CardTitle>{chart.getTitle()}</CardTitle> + <CardBody> + <EmptyStateSpinner /> + </CardBody> + </Card> + ); + } + + return ( + <Card isFlat={true}> + <CardTitle>{chart.getTitle()}</CardTitle> + <CardBody> + {chart.getType() === 'sparkline' ? ( + <SparklineChart unit={chart.getUnit()} metrics={data} /> + ) : ( + <DefaultChart type={chart.getType()} unit={chart.getUnit()} stacked={chart.getStacked()} metrics={data} /> + )} + </CardBody> + </Card> + ); +}; + +export default Chart; diff --git a/app/src/components/applications/details/metrics/Charts.tsx b/app/src/components/applications/details/metrics/Charts.tsx new file mode 100644 index 000000000..36f8c4f2b --- /dev/null +++ b/app/src/components/applications/details/metrics/Charts.tsx @@ -0,0 +1,66 @@ +import { Grid, GridItem, Title, gridSpans } from '@patternfly/react-core'; +import React, { useEffect, useRef, useState } from 'react'; + +import { IApplicationMetricsVariable, IDatasourceOptions } from 'utils/proto'; +import { ApplicationMetricsChart } from 'generated/proto/application_pb'; +import Chart from 'components/applications/details/metrics/Chart'; + +interface IChartsProps { + datasourceName: string; + datasourceOptions: IDatasourceOptions; + variables: IApplicationMetricsVariable[]; + charts: ApplicationMetricsChart[]; +} + +// Charts renders a Grid of the user defined charts for an applicatication. The grid contains a small padding to the +// toolbar, which is rendered above. When the width of the grid is larger then 1200px, we apply the user defined size +// for each chart. If the width is below this value each chart will be rendered accross the complete width of the grid. +const Charts: React.FunctionComponent<IChartsProps> = ({ + datasourceName, + datasourceOptions, + variables, + charts, +}: IChartsProps) => { + const refGrid = useRef<HTMLDivElement>(null); + const [width, setWidth] = useState<number>(0); + + // useEffect is executed on every render, to determin the size of the grid and apply the user defined size for charts + // if necessary. + useEffect(() => { + if (refGrid && refGrid.current) { + setWidth(refGrid.current.getBoundingClientRect().width); + } + }, []); + + return ( + <div className="kobsio-charts-grid" ref={refGrid}> + <Grid hasGutter={true}> + {charts.map((chart, index) => ( + <GridItem + key={index} + span={ + width >= 1200 && chart.getSize() > 0 && chart.getSize() <= 12 && chart.getType() !== 'divider' + ? (chart.getSize() as gridSpans) + : 12 + } + > + {chart.getType() === 'divider' ? ( + <Title headingLevel="h6" size="lg"> + {chart.getTitle()} + + ) : ( + + )} + + ))} + + + ); +}; + +export default Charts; diff --git a/app/src/components/applications/details/metrics/Metrics.tsx b/app/src/components/applications/details/metrics/Metrics.tsx new file mode 100644 index 000000000..b5d5b80d2 --- /dev/null +++ b/app/src/components/applications/details/metrics/Metrics.tsx @@ -0,0 +1,123 @@ +import { Alert, AlertActionLink, AlertVariant } from '@patternfly/react-core'; +import React, { useCallback, useEffect, useState } from 'react'; +import ChartAreaIcon from '@patternfly/react-icons/dist/js/icons/chart-area-icon'; + +import { GetDatasourceRequest, GetDatasourceResponse } from 'generated/proto/datasources_pb'; +import { + IApplicationMetricsVariable, + IDatasourceOptions, + convertApplicationMetricsVariablesFromProto, +} from 'utils/proto'; +import { Application } from 'generated/proto/application_pb'; +import Charts from 'components/applications/details/metrics/Charts'; +import { DatasourcesPromiseClient } from 'generated/proto/datasources_grpc_web_pb'; +import NotDefined from 'components/applications/details/NotDefined'; +import Toolbar from 'components/applications/details/metrics/Toolbar'; +import { apiURL } from 'utils/constants'; + +const datasourcesService = new DatasourcesPromiseClient(apiURL, null, null); + +interface IMetricsProps { + application: Application; +} + +// Metrics the metrics component is used to display the metrics for an application. The metrics view consist of a +// toolbar, to display variables and different datasource specific options for the queries. It also contains a charts +// view, to display all user defined charts. +const Metrics: React.FunctionComponent = ({ application }: IMetricsProps) => { + const metrics = application.getMetrics(); + + const [datasourceName, setDatasourceName] = useState(''); + const [datasourceType, setDatasourceType] = useState(''); + const [datasourceOptions, setDatasourceOptions] = useState({ + resolution: '', + timeEnd: Math.floor(Date.now() / 1000), + timeStart: Math.floor(Date.now() / 1000) - 3600, + }); + const [variables, setVariables] = useState( + metrics ? convertApplicationMetricsVariablesFromProto(metrics.getVariablesList()) : [], + ); + const [error, setError] = useState(''); + + // fetchDatasourceDetails fetch all details, which are specific for a datasource. Currently this is only the type of + // the datasource, but can be extended in the future if needed. More information can be found in the datasources.proto + // file and the documentation for the GetDatasourceResponse message format. + const fetchDatasourceDetails = useCallback(async () => { + try { + if (!metrics) { + throw new Error('Metrics are not defined.'); + } else { + const getDatasourceRequest = new GetDatasourceRequest(); + getDatasourceRequest.setName(metrics.getDatasource()); + + const getDatasourceResponse: GetDatasourceResponse = await datasourcesService.getDatasource( + getDatasourceRequest, + null, + ); + + setDatasourceName(getDatasourceResponse.getName()); + setDatasourceType(getDatasourceResponse.getType()); + setError(''); + } + } catch (err) { + setError(err.message); + } + }, [metrics]); + + useEffect(() => { + fetchDatasourceDetails(); + }, [fetchDatasourceDetails]); + + // If the metrics seticon in the Application CR isn't defined, we return the NotDefined component, with a link to the + // documentation, where a user can find more information on who to define metrics. + if (!metrics) { + return ( + + ); + } + + // If an error occured during, we show the user the error, with an option to retry the request. + if (error) { + return ( + + Retry + + } + > +

{error}

+ + ); + } + + return ( + + setDatasourceOptions(opts)} + variables={variables} + setVariables={(vars): void => setVariables(vars)} + /> + + + + ); +}; + +export default Metrics; diff --git a/app/src/components/applications/details/metrics/Options.tsx b/app/src/components/applications/details/metrics/Options.tsx new file mode 100644 index 000000000..872dc5a69 --- /dev/null +++ b/app/src/components/applications/details/metrics/Options.tsx @@ -0,0 +1,160 @@ +import { + Button, + ButtonVariant, + Form, + FormGroup, + Level, + LevelItem, + Modal, + ModalVariant, + SimpleList, + SimpleListItem, + TextInput, +} from '@patternfly/react-core'; +import React, { useState } from 'react'; + +import { IDatasourceOptions } from 'utils/proto'; +import { formatTime } from 'utils/helpers'; + +interface IOptionsProps { + type: string; + options: IDatasourceOptions; + setOptions: (options: IDatasourceOptions) => void; +} + +// Options is the component, where the user can select various options for the current view. The user can select a time +// range for all queries via the quick select option or he can specify a start and end time via the input fields. Later +// we can also display datasource specific options within the modal component. +const Options: React.FunctionComponent = ({ options, setOptions }: IOptionsProps) => { + const [show, setShow] = useState(false); + const [timeStart, setTimeStart] = useState(formatTime(options.timeStart)); + const [timeEnd, setTimeEnd] = useState(formatTime(options.timeEnd)); + const [timeStartError, setTimeStartError] = useState(''); + const [timeEndError, setTimeEndError] = useState(''); + + // apply parses the value of the start and end input fields. If the user provided a correct data/time format, we + // change the start and end time to the new values. If the string couldn't be parsed, the user will see an error below + // the corresponding input field. + const apply = (): void => { + const parsedTimeStart = new Date(timeStart.replace(' ', 'T') + 'Z'); + const parsedTimeEnd = new Date(timeEnd.replace(' ', 'T') + 'Z'); + + if (parsedTimeStart.toString() === 'Invalid Date') { + setTimeStartError('Invalid time format.'); + setTimeEndError(''); + } else if (parsedTimeEnd.toString() === 'Invalid Date') { + setTimeStartError(''); + setTimeEndError('Invalid time format.'); + } else { + setTimeStartError(''); + setTimeEndError(''); + setOptions({ + ...options, + timeEnd: parsedTimeStart.getTime() / 1000, + timeStart: parsedTimeStart.getTime() / 1000, + }); + setShow(false); + } + }; + + // quick is the function for the quick select option. We always use the current time in seconds and substract the + // seconds specified in the quick select option. + const quick = (seconds: number): void => { + setOptions({ + ...options, + timeEnd: Math.floor(Date.now() / 1000), + timeStart: Math.floor(Date.now() / 1000) - seconds, + }); + setShow(false); + }; + + return ( + + + setShow(false)} + actions={[ + , + , + ]} + > + + +
+ + setTimeStart(value)} + /> + + + setTimeEnd(value)} + /> + +
+
+ + + quick(300)}>Last 5 Minutes + quick(900)}>Last 15 Minutes + quick(1800)}>Last 30 Minutes + quick(3600)}>Last 1 Hour + quick(10800)}>Last 3 Hours + quick(21600)}>Last 6 Hours + quick(43200)}>Last 12 Hours + + + + + quick(86400)}>Last 1 Day + quick(172800)}>Last 2 Days + quick(604800)}>Last 7 Days + quick(2592000)}>Last 30 Days + quick(7776000)}>Last 90 Days + quick(15552000)}>Last 6 Months + quick(31536000)}>Last 1 Year + + +
+
+
+ ); +}; + +export default Options; diff --git a/app/src/components/applications/details/metrics/Toolbar.tsx b/app/src/components/applications/details/metrics/Toolbar.tsx new file mode 100644 index 000000000..13c7bcf93 --- /dev/null +++ b/app/src/components/applications/details/metrics/Toolbar.tsx @@ -0,0 +1,138 @@ +import { + Alert, + AlertActionLink, + AlertVariant, + Toolbar as PatternflyToolbar, + ToolbarContent, + ToolbarGroup, + ToolbarItem, + ToolbarToggleGroup, +} from '@patternfly/react-core'; +import React, { useCallback, useEffect, useState } from 'react'; +import FilterIcon from '@patternfly/react-icons/dist/js/icons/filter-icon'; + +import { GetVariablesRequest, GetVariablesResponse } from 'generated/proto/datasources_pb'; +import { + IApplicationMetricsVariable, + IDatasourceOptions, + convertApplicationMetricsVariablesFromProto, + convertApplicationMetricsVariablesToProto, + convertDatasourceOptionsToProto, +} from 'utils/proto'; +import { DatasourcesPromiseClient } from 'generated/proto/datasources_grpc_web_pb'; +import Options from 'components/applications/details/metrics/Options'; +import Variable from 'components/applications/details/metrics/Variable'; +import { apiURL } from 'utils/constants'; + +const datasourcesService = new DatasourcesPromiseClient(apiURL, null, null); + +interface IToolbarProps { + datasourcenName: string; + datasourceType: string; + datasourceOptions: IDatasourceOptions; + setDatasourceOptions: (options: IDatasourceOptions) => void; + variables: IApplicationMetricsVariable[]; + setVariables: (variables: IApplicationMetricsVariable[]) => void; + isDrawer?: boolean; +} + +// Toolbar component displays a list of all variables and an options field. The variables are displayed via a dropdown +// and can be selected by the user. If the user selects a new value, the variables property will be changed via the +// setVariables function, so that the change is also propergated to the corresponding charts. The same counts for the +// datasource options. +const Toolbar: React.FunctionComponent = ({ + datasourcenName, + datasourceType, + datasourceOptions, + setDatasourceOptions, + variables, + setVariables, +}: IToolbarProps) => { + const [error, setError] = useState(''); + + // onSelectVariableValue is executed, when the user selects a new value for a variable. It will create a copy of the + // current variables, changes the value and sets the new values in the parent component. + const onSelectVariableValue = (value: string, index: number): void => { + const tmpVariables = [...variables]; + tmpVariables[index].value = value; + setVariables(tmpVariables); + }; + + // fetchVariables is used to fetch all values for all variables. When we successfully fetched all values we change, + // the passed in variables property. + // HACK: Since this ends in an endless rerendering and fetching we have omit the setVariables in the dependency array. + // We also have to compare the JSON representation of the variables prop and the loaded variables, to omit unnecessary + // rerenderings. Maybe we can also do this before the fetch, so that we do not fetch the variables twice. + const fetchVariables = useCallback(async () => { + try { + if (datasourcenName !== '' && variables.length > 0) { + const getVariablesRequest = new GetVariablesRequest(); + getVariablesRequest.setName(datasourcenName); + getVariablesRequest.setOptions(convertDatasourceOptionsToProto(datasourceOptions)); + getVariablesRequest.setVariablesList(convertApplicationMetricsVariablesToProto(variables)); + + const getVariablesResponse: GetVariablesResponse = await datasourcesService.getVariables( + getVariablesRequest, + null, + ); + + const tmpVariables = convertApplicationMetricsVariablesFromProto(getVariablesResponse.getVariablesList()); + if (JSON.stringify(tmpVariables) !== JSON.stringify(variables)) { + setVariables(tmpVariables); + } + setError(''); + } + } catch (err) { + setError(err.message); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [datasourcenName, datasourceOptions, variables]); + + useEffect(() => { + fetchVariables(); + }, [fetchVariables]); + + // If an error occured during, we show the user the error, with an option to retry the request. + if (error) { + return ( + + Retry + + } + > +

{error}

+
+ ); + } + + return ( + + + } breakpoint="lg"> + + {variables.map((variable, index) => ( + + onSelectVariableValue(value, index)} + /> + + ))} + + + + + + + + + + ); +}; + +export default Toolbar; diff --git a/app/src/components/applications/details/metrics/Variable.tsx b/app/src/components/applications/details/metrics/Variable.tsx new file mode 100644 index 000000000..def897867 --- /dev/null +++ b/app/src/components/applications/details/metrics/Variable.tsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react'; +import { Select, SelectOption, SelectOptionObject, SelectVariant } from '@patternfly/react-core'; + +import { IApplicationMetricsVariable } from 'utils/proto'; + +interface IVariableProps { + variable: IApplicationMetricsVariable; + selectValue: (value: string) => void; +} + +// Variable is the component tp render a single variable in a Select component. When the user selects a new value, via +// use the passed in selectValue function to change the variable. +const Variable: React.FunctionComponent = ({ variable, selectValue }: IVariableProps) => { + const [show, setShow] = useState(false); + + const onSelect = ( + event: React.MouseEvent | React.ChangeEvent, + value: string | SelectOptionObject, + ): void => { + selectValue(value as string); + setShow(false); + }; + + return ( + + ); +}; + +export default Variable; diff --git a/app/src/components/applications/details/metrics/charts/Default.tsx b/app/src/components/applications/details/metrics/charts/Default.tsx new file mode 100644 index 000000000..98e6a3a23 --- /dev/null +++ b/app/src/components/applications/details/metrics/charts/Default.tsx @@ -0,0 +1,100 @@ +import { + Chart, + ChartArea, + ChartAxis, + ChartBar, + ChartGroup, + ChartLegendTooltip, + ChartLine, + ChartStack, + ChartThemeColor, + createContainer, +} from '@patternfly/react-charts'; +import React, { useEffect, useRef, useState } from 'react'; + +import { DatasourceMetrics } from 'generated/proto/datasources_pb'; +import { IDatasourceMetricsData } from 'utils/proto'; +import { formatTime } from 'utils/helpers'; + +interface ILabels { + datum: IDatasourceMetricsData; +} + +export interface IDefaultProps { + type: string; + unit: string; + stacked: boolean; + metrics: DatasourceMetrics[]; +} + +// Default represents our default chart types: area, bar and line chart. We display the user defined unit at the y axis +// of the chart. If the user enabled the stacked option the chart is wrapped in a ChartStack instead of the ChartGroup +// component. +// The documentation for the different chart types can be found in the Patternfly documentation: +// - Area Chart: https://www.patternfly.org/v4/charts/area-chart +// - Bar Chart: https://www.patternfly.org/v4/charts/bar-chart +// - Line Chart: https://www.patternfly.org/v4/charts/line-chart +// +// NOTE: Currently it is not possible to select a single time series in the chart. This should be changed in the future, +// by using an interactive legend: https://www.patternfly.org/v4/charts/legend-chart#interactive-legend +const Default: React.FunctionComponent = ({ type, unit, stacked, metrics }: IDefaultProps) => { + const refChart = useRef(null); + const [width, setWidth] = useState(0); + const [height, setHeight] = useState(0); + + // useEffect is executed on every render of this component. This is needed, so that we are able to use a width of 100% + // and a static height for the chart. + useEffect(() => { + if (refChart && refChart.current) { + setWidth(refChart.current.getBoundingClientRect().width); + setHeight(refChart.current.getBoundingClientRect().height); + } + }, []); + + const CursorVoronoiContainer = createContainer('voronoi', 'cursor'); + const legendData = metrics.map((metric, index) => ({ childName: `index${index}`, name: metric.getLabel() })); + const series = metrics.map((metric, index) => + type === 'area' ? ( + + ) : type === 'bar' ? ( + + ) : ( + + ), + ); + + return ( +
+ `${datum.y} ${unit}`} + labelComponent={ + formatTime(Math.floor(point.x / 1000))} + /> + } + mouseFollowTooltips + voronoiDimension="x" + voronoiPadding={0} + /> + } + height={height} + legendData={legendData} + legendPosition="bottom" + padding={{ bottom: 60, left: 60, right: 0, top: 0 }} + scale={{ x: 'time', y: 'linear' }} + themeColor={ChartThemeColor.multiOrdered} + width={width} + > + + + {stacked ? {series} : {series}} + +
+ ); +}; + +export default Default; diff --git a/app/src/components/applications/details/metrics/charts/Sparkline.tsx b/app/src/components/applications/details/metrics/charts/Sparkline.tsx new file mode 100644 index 000000000..8fa1265dd --- /dev/null +++ b/app/src/components/applications/details/metrics/charts/Sparkline.tsx @@ -0,0 +1,42 @@ +import { ChartArea, ChartGroup } from '@patternfly/react-charts'; +import React, { useEffect, useRef, useState } from 'react'; + +import { DatasourceMetrics } from 'generated/proto/datasources_pb'; + +export interface ISparklineProps { + unit: string; + metrics: DatasourceMetrics[]; +} + +// Sparkline displays a sparkline chart. The complete documentation for sparklines can be found in the Patternfly +// documentation https://www.patternfly.org/v4/charts/sparkline-chart. We also display the last/current value in the +// center of the sparkline, including the user defined unit. +const Sparkline: React.FunctionComponent = ({ unit, metrics }: ISparklineProps) => { + const refChart = useRef(null); + const [width, setWidth] = useState(0); + const [height, setHeight] = useState(0); + + // useEffect is executed on every render of this component. This is needed, so that we are able to use a width of 100% + // and a static height for the chart. + useEffect(() => { + if (refChart && refChart.current) { + setWidth(refChart.current.getBoundingClientRect().width); + setHeight(refChart.current.getBoundingClientRect().height); + } + }, []); + + return ( +
+
+ {metrics[0].getDataList()[metrics[0].getDataList().length - 1].getY()} {unit} +
+ + {metrics.map((metric, index) => ( + + ))} + +
+ ); +}; + +export default Sparkline; diff --git a/app/src/components/applications/details/resources/Resources.tsx b/app/src/components/applications/details/resources/Resources.tsx index 005772dd7..7e316dfdf 100644 --- a/app/src/components/applications/details/resources/Resources.tsx +++ b/app/src/components/applications/details/resources/Resources.tsx @@ -2,7 +2,7 @@ import { Accordion, AccordionContent, AccordionItem, AccordionToggle } from '@pa import React, { useState } from 'react'; import CubesIcon from '@patternfly/react-icons/dist/js/icons/cubes-icon'; -import { Application } from 'generated/proto/applications_pb'; +import { Application } from 'generated/proto/application_pb'; import NotDefined from 'components/applications/details/NotDefined'; import Resource from 'components/applications/details/resources/Resource'; import { resources } from 'components/resources/shared/helpers'; diff --git a/app/src/components/applications/overview/Card.tsx b/app/src/components/applications/overview/Card.tsx new file mode 100644 index 000000000..736ac7410 --- /dev/null +++ b/app/src/components/applications/overview/Card.tsx @@ -0,0 +1,85 @@ +import { CardBody, CardTitle, Card as PatternflyCard } from '@patternfly/react-core'; +import React, { useCallback, useEffect, useState } from 'react'; + +import { + DatasourceMetrics, + DatasourceOptions, + GetMetricsRequest, + GetMetricsResponse, +} from 'generated/proto/datasources_pb'; +import { Application } from 'generated/proto/application_pb'; +import Chart from 'components/applications/overview/Chart'; +import { DatasourcesPromiseClient } from 'generated/proto/datasources_grpc_web_pb'; +import { apiURL } from 'utils/constants'; + +const datasourcesService = new DatasourcesPromiseClient(apiURL, null, null); + +interface ICardProps { + application: Application; + select: (application: Application) => void; +} + +// Card displays a single application within the Applications gallery. The component requires the application and a +// select function as props. The select function is called, when the user clicks on the card. In the applications pages, +// this will then open the drawer with the selected application. +const Card: React.FunctionComponent = ({ application, select }: ICardProps) => { + const metrics = application.getMetrics(); + + const [data, setData] = useState([]); + const [error, setError] = useState(''); + + // fetchData is used to fetch the data for the health metric of an Application. The data is then displayed as + // sparkline within the card for the application in the gallery. + const fetchData = useCallback(async () => { + try { + if (metrics && metrics.hasHealth()) { + const options = new DatasourceOptions(); + options.setTimeend(Math.floor(Date.now() / 1000)); + options.setTimestart(Math.floor(Date.now() / 1000) - 3600); + + const getMetricsRequest = new GetMetricsRequest(); + getMetricsRequest.setName(metrics.getDatasource()); + getMetricsRequest.setOptions(options); + + const health = metrics.getHealth(); + if (health) { + getMetricsRequest.setQueriesList(health.getQueriesList()); + } + + const getMetricsResponse: GetMetricsResponse = await datasourcesService.getMetrics(getMetricsRequest, null); + + setData(getMetricsResponse.getMetricsList()); + setError(''); + } + } catch (err) { + setError(err.message); + } + }, [metrics]); + + useEffect(() => { + fetchData(); + }, [fetchData]); + + // The card for an application can have three different state. When an error occured during the data fetch, we display + // this error on the card. When all data was successfully loaded we display the sparkline. If the application doesn't + // define a health chart, we just display the namespace and cluster for the application in the card body. + return ( + select(application)}> + {application.getName()} + {error ? ( + Could not get health data: {error} + ) : data.length > 0 && metrics && metrics.hasHealth() ? ( + + + + ) : ( + +
Namespace: {application.getNamespace()}
+
Cluster: {application.getCluster()}
+
+ )} +
+ ); +}; + +export default Card; diff --git a/app/src/components/applications/overview/Chart.tsx b/app/src/components/applications/overview/Chart.tsx new file mode 100644 index 000000000..bd01b75fb --- /dev/null +++ b/app/src/components/applications/overview/Chart.tsx @@ -0,0 +1,48 @@ +import { ChartArea, ChartGroup } from '@patternfly/react-charts'; +import React, { useEffect, useRef, useState } from 'react'; + +import { DatasourceMetrics } from 'generated/proto/datasources_pb'; + +export interface IChartProps { + title?: string; + unit?: string; + metrics: DatasourceMetrics[]; +} + +// Chart is used to render a sparkline on the card of an application in the overview gallery. Above the sparkline we +// show the last/current value of the metric and the chart title. +const Chart: React.FunctionComponent = ({ title, unit, metrics }: IChartProps) => { + const refChart = useRef(null); + const [width, setWidth] = useState(0); + const [height, setHeight] = useState(0); + + // useEffect is executed on every render of this component. This is needed, so that we are able to use a width of 100% + // and a static height for the chart. + useEffect(() => { + if (refChart && refChart.current) { + setWidth(refChart.current.getBoundingClientRect().width); + setHeight(refChart.current.getBoundingClientRect().height); + } + }, []); + + return ( + +
+ {metrics[0].getDataList()[metrics[0].getDataList().length - 1].getY().toFixed(2)} {unit ? unit : ''} +
+ {title ? ( +
{title}
+ ) : null} + +
+ + {metrics.map((metric, index) => ( + + ))} + +
+
+ ); +}; + +export default Chart; diff --git a/app/src/components/shared/EmptyStateSpinner.tsx b/app/src/components/shared/EmptyStateSpinner.tsx new file mode 100644 index 000000000..29a27e756 --- /dev/null +++ b/app/src/components/shared/EmptyStateSpinner.tsx @@ -0,0 +1,24 @@ +import { EmptyState, EmptyStateIcon, Spinner, Title } from '@patternfly/react-core'; +import React from 'react'; + +interface IEmptyStateSpinnerProps { + title?: string; +} + +// EmptyStateSpinner is a component, which can be used to show an empty state with a spinner. The propose of this +// component is to show that the data isn't ready yet and must be fetched from the gRPC API. The component takes an +// optional title, which will be shown below the spinner. +const EmptyStateSpinner: React.FunctionComponent = ({ title }: IEmptyStateSpinnerProps) => { + return ( + + + {title ? ( + + {title} + + ) : null} + + ); +}; + +export default EmptyStateSpinner; diff --git a/app/src/generated/proto/application_pb.d.ts b/app/src/generated/proto/application_pb.d.ts new file mode 100644 index 000000000..e3f7b9b9a --- /dev/null +++ b/app/src/generated/proto/application_pb.d.ts @@ -0,0 +1,291 @@ +// package: application +// file: application.proto + +import * as jspb from "google-protobuf"; + +export class Application extends jspb.Message { + getCluster(): string; + setCluster(value: string): void; + + getNamespace(): string; + setNamespace(value: string): void; + + getName(): string; + setName(value: string): void; + + clearLinksList(): void; + getLinksList(): Array; + setLinksList(value: Array): void; + addLinks(value?: ApplicationLink, index?: number): ApplicationLink; + + clearResourcesList(): void; + getResourcesList(): Array; + setResourcesList(value: Array): void; + addResources(value?: ApplicationResources, index?: number): ApplicationResources; + + hasMetrics(): boolean; + clearMetrics(): void; + getMetrics(): ApplicationMetrics | undefined; + setMetrics(value?: ApplicationMetrics): void; + + hasLogs(): boolean; + clearLogs(): void; + getLogs(): ApplicationLogs | undefined; + setLogs(value?: ApplicationLogs): void; + + hasTraces(): boolean; + clearTraces(): void; + getTraces(): ApplicationTraces | undefined; + setTraces(value?: ApplicationTraces): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): Application.AsObject; + static toObject(includeInstance: boolean, msg: Application): Application.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: Application, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): Application; + static deserializeBinaryFromReader(message: Application, reader: jspb.BinaryReader): Application; +} + +export namespace Application { + export type AsObject = { + cluster: string, + namespace: string, + name: string, + linksList: Array, + resourcesList: Array, + metrics?: ApplicationMetrics.AsObject, + logs?: ApplicationLogs.AsObject, + traces?: ApplicationTraces.AsObject, + } +} + +export class ApplicationLink extends jspb.Message { + getTitle(): string; + setTitle(value: string): void; + + getLink(): string; + setLink(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ApplicationLink.AsObject; + static toObject(includeInstance: boolean, msg: ApplicationLink): ApplicationLink.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ApplicationLink, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ApplicationLink; + static deserializeBinaryFromReader(message: ApplicationLink, reader: jspb.BinaryReader): ApplicationLink; +} + +export namespace ApplicationLink { + export type AsObject = { + title: string, + link: string, + } +} + +export class ApplicationResources extends jspb.Message { + clearKindsList(): void; + getKindsList(): Array; + setKindsList(value: Array): void; + addKinds(value: string, index?: number): string; + + getSelector(): string; + setSelector(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ApplicationResources.AsObject; + static toObject(includeInstance: boolean, msg: ApplicationResources): ApplicationResources.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ApplicationResources, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ApplicationResources; + static deserializeBinaryFromReader(message: ApplicationResources, reader: jspb.BinaryReader): ApplicationResources; +} + +export namespace ApplicationResources { + export type AsObject = { + kindsList: Array, + selector: string, + } +} + +export class ApplicationMetrics extends jspb.Message { + getDatasource(): string; + setDatasource(value: string): void; + + hasHealth(): boolean; + clearHealth(): void; + getHealth(): ApplicationMetricsChart | undefined; + setHealth(value?: ApplicationMetricsChart): void; + + clearVariablesList(): void; + getVariablesList(): Array; + setVariablesList(value: Array): void; + addVariables(value?: ApplicationMetricsVariable, index?: number): ApplicationMetricsVariable; + + clearChartsList(): void; + getChartsList(): Array; + setChartsList(value: Array): void; + addCharts(value?: ApplicationMetricsChart, index?: number): ApplicationMetricsChart; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ApplicationMetrics.AsObject; + static toObject(includeInstance: boolean, msg: ApplicationMetrics): ApplicationMetrics.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ApplicationMetrics, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ApplicationMetrics; + static deserializeBinaryFromReader(message: ApplicationMetrics, reader: jspb.BinaryReader): ApplicationMetrics; +} + +export namespace ApplicationMetrics { + export type AsObject = { + datasource: string, + health?: ApplicationMetricsChart.AsObject, + variablesList: Array, + chartsList: Array, + } +} + +export class ApplicationMetricsVariable extends jspb.Message { + getName(): string; + setName(value: string): void; + + getLabel(): string; + setLabel(value: string): void; + + getQuery(): string; + setQuery(value: string): void; + + getAllowall(): boolean; + setAllowall(value: boolean): void; + + clearValuesList(): void; + getValuesList(): Array; + setValuesList(value: Array): void; + addValues(value: string, index?: number): string; + + getValue(): string; + setValue(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ApplicationMetricsVariable.AsObject; + static toObject(includeInstance: boolean, msg: ApplicationMetricsVariable): ApplicationMetricsVariable.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ApplicationMetricsVariable, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ApplicationMetricsVariable; + static deserializeBinaryFromReader(message: ApplicationMetricsVariable, reader: jspb.BinaryReader): ApplicationMetricsVariable; +} + +export namespace ApplicationMetricsVariable { + export type AsObject = { + name: string, + label: string, + query: string, + allowall: boolean, + valuesList: Array, + value: string, + } +} + +export class ApplicationMetricsChart extends jspb.Message { + getTitle(): string; + setTitle(value: string): void; + + getType(): string; + setType(value: string): void; + + getUnit(): string; + setUnit(value: string): void; + + getStacked(): boolean; + setStacked(value: boolean): void; + + getSize(): number; + setSize(value: number): void; + + clearQueriesList(): void; + getQueriesList(): Array; + setQueriesList(value: Array): void; + addQueries(value?: ApplicationMetricsQuery, index?: number): ApplicationMetricsQuery; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ApplicationMetricsChart.AsObject; + static toObject(includeInstance: boolean, msg: ApplicationMetricsChart): ApplicationMetricsChart.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ApplicationMetricsChart, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ApplicationMetricsChart; + static deserializeBinaryFromReader(message: ApplicationMetricsChart, reader: jspb.BinaryReader): ApplicationMetricsChart; +} + +export namespace ApplicationMetricsChart { + export type AsObject = { + title: string, + type: string, + unit: string, + stacked: boolean, + size: number, + queriesList: Array, + } +} + +export class ApplicationMetricsQuery extends jspb.Message { + getQuery(): string; + setQuery(value: string): void; + + getLabel(): string; + setLabel(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ApplicationMetricsQuery.AsObject; + static toObject(includeInstance: boolean, msg: ApplicationMetricsQuery): ApplicationMetricsQuery.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ApplicationMetricsQuery, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ApplicationMetricsQuery; + static deserializeBinaryFromReader(message: ApplicationMetricsQuery, reader: jspb.BinaryReader): ApplicationMetricsQuery; +} + +export namespace ApplicationMetricsQuery { + export type AsObject = { + query: string, + label: string, + } +} + +export class ApplicationLogs extends jspb.Message { + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ApplicationLogs.AsObject; + static toObject(includeInstance: boolean, msg: ApplicationLogs): ApplicationLogs.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ApplicationLogs, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ApplicationLogs; + static deserializeBinaryFromReader(message: ApplicationLogs, reader: jspb.BinaryReader): ApplicationLogs; +} + +export namespace ApplicationLogs { + export type AsObject = { + } +} + +export class ApplicationTraces extends jspb.Message { + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ApplicationTraces.AsObject; + static toObject(includeInstance: boolean, msg: ApplicationTraces): ApplicationTraces.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ApplicationTraces, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ApplicationTraces; + static deserializeBinaryFromReader(message: ApplicationTraces, reader: jspb.BinaryReader): ApplicationTraces; +} + +export namespace ApplicationTraces { + export type AsObject = { + } +} + diff --git a/app/src/generated/proto/application_pb.js b/app/src/generated/proto/application_pb.js new file mode 100644 index 000000000..d83f3a21d --- /dev/null +++ b/app/src/generated/proto/application_pb.js @@ -0,0 +1,2289 @@ +// source: application.proto +/** + * @fileoverview + * @enhanceable + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = Function('return this')(); + +goog.exportSymbol('proto.application.Application', null, global); +goog.exportSymbol('proto.application.ApplicationLink', null, global); +goog.exportSymbol('proto.application.ApplicationLogs', null, global); +goog.exportSymbol('proto.application.ApplicationMetrics', null, global); +goog.exportSymbol('proto.application.ApplicationMetricsChart', null, global); +goog.exportSymbol('proto.application.ApplicationMetricsQuery', null, global); +goog.exportSymbol('proto.application.ApplicationMetricsVariable', null, global); +goog.exportSymbol('proto.application.ApplicationResources', null, global); +goog.exportSymbol('proto.application.ApplicationTraces', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.application.Application = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.application.Application.repeatedFields_, null); +}; +goog.inherits(proto.application.Application, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.application.Application.displayName = 'proto.application.Application'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.application.ApplicationLink = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.application.ApplicationLink, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.application.ApplicationLink.displayName = 'proto.application.ApplicationLink'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.application.ApplicationResources = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.application.ApplicationResources.repeatedFields_, null); +}; +goog.inherits(proto.application.ApplicationResources, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.application.ApplicationResources.displayName = 'proto.application.ApplicationResources'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.application.ApplicationMetrics = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.application.ApplicationMetrics.repeatedFields_, null); +}; +goog.inherits(proto.application.ApplicationMetrics, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.application.ApplicationMetrics.displayName = 'proto.application.ApplicationMetrics'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.application.ApplicationMetricsVariable = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.application.ApplicationMetricsVariable.repeatedFields_, null); +}; +goog.inherits(proto.application.ApplicationMetricsVariable, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.application.ApplicationMetricsVariable.displayName = 'proto.application.ApplicationMetricsVariable'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.application.ApplicationMetricsChart = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.application.ApplicationMetricsChart.repeatedFields_, null); +}; +goog.inherits(proto.application.ApplicationMetricsChart, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.application.ApplicationMetricsChart.displayName = 'proto.application.ApplicationMetricsChart'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.application.ApplicationMetricsQuery = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.application.ApplicationMetricsQuery, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.application.ApplicationMetricsQuery.displayName = 'proto.application.ApplicationMetricsQuery'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.application.ApplicationLogs = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.application.ApplicationLogs, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.application.ApplicationLogs.displayName = 'proto.application.ApplicationLogs'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.application.ApplicationTraces = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.application.ApplicationTraces, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.application.ApplicationTraces.displayName = 'proto.application.ApplicationTraces'; +} + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.application.Application.repeatedFields_ = [4,5]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.application.Application.prototype.toObject = function(opt_includeInstance) { + return proto.application.Application.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.application.Application} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.Application.toObject = function(includeInstance, msg) { + var f, obj = { + cluster: jspb.Message.getFieldWithDefault(msg, 1, ""), + namespace: jspb.Message.getFieldWithDefault(msg, 2, ""), + name: jspb.Message.getFieldWithDefault(msg, 3, ""), + linksList: jspb.Message.toObjectList(msg.getLinksList(), + proto.application.ApplicationLink.toObject, includeInstance), + resourcesList: jspb.Message.toObjectList(msg.getResourcesList(), + proto.application.ApplicationResources.toObject, includeInstance), + metrics: (f = msg.getMetrics()) && proto.application.ApplicationMetrics.toObject(includeInstance, f), + logs: (f = msg.getLogs()) && proto.application.ApplicationLogs.toObject(includeInstance, f), + traces: (f = msg.getTraces()) && proto.application.ApplicationTraces.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.application.Application} + */ +proto.application.Application.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.application.Application; + return proto.application.Application.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.application.Application} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.application.Application} + */ +proto.application.Application.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setCluster(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setNamespace(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 4: + var value = new proto.application.ApplicationLink; + reader.readMessage(value,proto.application.ApplicationLink.deserializeBinaryFromReader); + msg.addLinks(value); + break; + case 5: + var value = new proto.application.ApplicationResources; + reader.readMessage(value,proto.application.ApplicationResources.deserializeBinaryFromReader); + msg.addResources(value); + break; + case 6: + var value = new proto.application.ApplicationMetrics; + reader.readMessage(value,proto.application.ApplicationMetrics.deserializeBinaryFromReader); + msg.setMetrics(value); + break; + case 7: + var value = new proto.application.ApplicationLogs; + reader.readMessage(value,proto.application.ApplicationLogs.deserializeBinaryFromReader); + msg.setLogs(value); + break; + case 8: + var value = new proto.application.ApplicationTraces; + reader.readMessage(value,proto.application.ApplicationTraces.deserializeBinaryFromReader); + msg.setTraces(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.application.Application.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.application.Application.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.application.Application} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.Application.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getCluster(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getNamespace(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getLinksList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 4, + f, + proto.application.ApplicationLink.serializeBinaryToWriter + ); + } + f = message.getResourcesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 5, + f, + proto.application.ApplicationResources.serializeBinaryToWriter + ); + } + f = message.getMetrics(); + if (f != null) { + writer.writeMessage( + 6, + f, + proto.application.ApplicationMetrics.serializeBinaryToWriter + ); + } + f = message.getLogs(); + if (f != null) { + writer.writeMessage( + 7, + f, + proto.application.ApplicationLogs.serializeBinaryToWriter + ); + } + f = message.getTraces(); + if (f != null) { + writer.writeMessage( + 8, + f, + proto.application.ApplicationTraces.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string cluster = 1; + * @return {string} + */ +proto.application.Application.prototype.getCluster = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.Application} returns this + */ +proto.application.Application.prototype.setCluster = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string namespace = 2; + * @return {string} + */ +proto.application.Application.prototype.getNamespace = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.Application} returns this + */ +proto.application.Application.prototype.setNamespace = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string name = 3; + * @return {string} + */ +proto.application.Application.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.Application} returns this + */ +proto.application.Application.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * repeated ApplicationLink links = 4; + * @return {!Array} + */ +proto.application.Application.prototype.getLinksList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.application.ApplicationLink, 4)); +}; + + +/** + * @param {!Array} value + * @return {!proto.application.Application} returns this +*/ +proto.application.Application.prototype.setLinksList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 4, value); +}; + + +/** + * @param {!proto.application.ApplicationLink=} opt_value + * @param {number=} opt_index + * @return {!proto.application.ApplicationLink} + */ +proto.application.Application.prototype.addLinks = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.application.ApplicationLink, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.application.Application} returns this + */ +proto.application.Application.prototype.clearLinksList = function() { + return this.setLinksList([]); +}; + + +/** + * repeated ApplicationResources resources = 5; + * @return {!Array} + */ +proto.application.Application.prototype.getResourcesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.application.ApplicationResources, 5)); +}; + + +/** + * @param {!Array} value + * @return {!proto.application.Application} returns this +*/ +proto.application.Application.prototype.setResourcesList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 5, value); +}; + + +/** + * @param {!proto.application.ApplicationResources=} opt_value + * @param {number=} opt_index + * @return {!proto.application.ApplicationResources} + */ +proto.application.Application.prototype.addResources = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.application.ApplicationResources, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.application.Application} returns this + */ +proto.application.Application.prototype.clearResourcesList = function() { + return this.setResourcesList([]); +}; + + +/** + * optional ApplicationMetrics metrics = 6; + * @return {?proto.application.ApplicationMetrics} + */ +proto.application.Application.prototype.getMetrics = function() { + return /** @type{?proto.application.ApplicationMetrics} */ ( + jspb.Message.getWrapperField(this, proto.application.ApplicationMetrics, 6)); +}; + + +/** + * @param {?proto.application.ApplicationMetrics|undefined} value + * @return {!proto.application.Application} returns this +*/ +proto.application.Application.prototype.setMetrics = function(value) { + return jspb.Message.setWrapperField(this, 6, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.application.Application} returns this + */ +proto.application.Application.prototype.clearMetrics = function() { + return this.setMetrics(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.application.Application.prototype.hasMetrics = function() { + return jspb.Message.getField(this, 6) != null; +}; + + +/** + * optional ApplicationLogs logs = 7; + * @return {?proto.application.ApplicationLogs} + */ +proto.application.Application.prototype.getLogs = function() { + return /** @type{?proto.application.ApplicationLogs} */ ( + jspb.Message.getWrapperField(this, proto.application.ApplicationLogs, 7)); +}; + + +/** + * @param {?proto.application.ApplicationLogs|undefined} value + * @return {!proto.application.Application} returns this +*/ +proto.application.Application.prototype.setLogs = function(value) { + return jspb.Message.setWrapperField(this, 7, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.application.Application} returns this + */ +proto.application.Application.prototype.clearLogs = function() { + return this.setLogs(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.application.Application.prototype.hasLogs = function() { + return jspb.Message.getField(this, 7) != null; +}; + + +/** + * optional ApplicationTraces traces = 8; + * @return {?proto.application.ApplicationTraces} + */ +proto.application.Application.prototype.getTraces = function() { + return /** @type{?proto.application.ApplicationTraces} */ ( + jspb.Message.getWrapperField(this, proto.application.ApplicationTraces, 8)); +}; + + +/** + * @param {?proto.application.ApplicationTraces|undefined} value + * @return {!proto.application.Application} returns this +*/ +proto.application.Application.prototype.setTraces = function(value) { + return jspb.Message.setWrapperField(this, 8, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.application.Application} returns this + */ +proto.application.Application.prototype.clearTraces = function() { + return this.setTraces(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.application.Application.prototype.hasTraces = function() { + return jspb.Message.getField(this, 8) != null; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.application.ApplicationLink.prototype.toObject = function(opt_includeInstance) { + return proto.application.ApplicationLink.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.application.ApplicationLink} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationLink.toObject = function(includeInstance, msg) { + var f, obj = { + title: jspb.Message.getFieldWithDefault(msg, 1, ""), + link: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.application.ApplicationLink} + */ +proto.application.ApplicationLink.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.application.ApplicationLink; + return proto.application.ApplicationLink.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.application.ApplicationLink} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.application.ApplicationLink} + */ +proto.application.ApplicationLink.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setTitle(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setLink(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.application.ApplicationLink.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.application.ApplicationLink.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.application.ApplicationLink} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationLink.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getTitle(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getLink(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional string title = 1; + * @return {string} + */ +proto.application.ApplicationLink.prototype.getTitle = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationLink} returns this + */ +proto.application.ApplicationLink.prototype.setTitle = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string link = 2; + * @return {string} + */ +proto.application.ApplicationLink.prototype.getLink = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationLink} returns this + */ +proto.application.ApplicationLink.prototype.setLink = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.application.ApplicationResources.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.application.ApplicationResources.prototype.toObject = function(opt_includeInstance) { + return proto.application.ApplicationResources.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.application.ApplicationResources} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationResources.toObject = function(includeInstance, msg) { + var f, obj = { + kindsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f, + selector: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.application.ApplicationResources} + */ +proto.application.ApplicationResources.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.application.ApplicationResources; + return proto.application.ApplicationResources.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.application.ApplicationResources} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.application.ApplicationResources} + */ +proto.application.ApplicationResources.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.addKinds(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setSelector(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.application.ApplicationResources.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.application.ApplicationResources.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.application.ApplicationResources} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationResources.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getKindsList(); + if (f.length > 0) { + writer.writeRepeatedString( + 1, + f + ); + } + f = message.getSelector(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * repeated string kinds = 1; + * @return {!Array} + */ +proto.application.ApplicationResources.prototype.getKindsList = function() { + return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.application.ApplicationResources} returns this + */ +proto.application.ApplicationResources.prototype.setKindsList = function(value) { + return jspb.Message.setField(this, 1, value || []); +}; + + +/** + * @param {string} value + * @param {number=} opt_index + * @return {!proto.application.ApplicationResources} returns this + */ +proto.application.ApplicationResources.prototype.addKinds = function(value, opt_index) { + return jspb.Message.addToRepeatedField(this, 1, value, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.application.ApplicationResources} returns this + */ +proto.application.ApplicationResources.prototype.clearKindsList = function() { + return this.setKindsList([]); +}; + + +/** + * optional string selector = 2; + * @return {string} + */ +proto.application.ApplicationResources.prototype.getSelector = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationResources} returns this + */ +proto.application.ApplicationResources.prototype.setSelector = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.application.ApplicationMetrics.repeatedFields_ = [3,4]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.application.ApplicationMetrics.prototype.toObject = function(opt_includeInstance) { + return proto.application.ApplicationMetrics.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.application.ApplicationMetrics} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationMetrics.toObject = function(includeInstance, msg) { + var f, obj = { + datasource: jspb.Message.getFieldWithDefault(msg, 1, ""), + health: (f = msg.getHealth()) && proto.application.ApplicationMetricsChart.toObject(includeInstance, f), + variablesList: jspb.Message.toObjectList(msg.getVariablesList(), + proto.application.ApplicationMetricsVariable.toObject, includeInstance), + chartsList: jspb.Message.toObjectList(msg.getChartsList(), + proto.application.ApplicationMetricsChart.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.application.ApplicationMetrics} + */ +proto.application.ApplicationMetrics.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.application.ApplicationMetrics; + return proto.application.ApplicationMetrics.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.application.ApplicationMetrics} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.application.ApplicationMetrics} + */ +proto.application.ApplicationMetrics.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setDatasource(value); + break; + case 2: + var value = new proto.application.ApplicationMetricsChart; + reader.readMessage(value,proto.application.ApplicationMetricsChart.deserializeBinaryFromReader); + msg.setHealth(value); + break; + case 3: + var value = new proto.application.ApplicationMetricsVariable; + reader.readMessage(value,proto.application.ApplicationMetricsVariable.deserializeBinaryFromReader); + msg.addVariables(value); + break; + case 4: + var value = new proto.application.ApplicationMetricsChart; + reader.readMessage(value,proto.application.ApplicationMetricsChart.deserializeBinaryFromReader); + msg.addCharts(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.application.ApplicationMetrics.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.application.ApplicationMetrics.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.application.ApplicationMetrics} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationMetrics.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getDatasource(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getHealth(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.application.ApplicationMetricsChart.serializeBinaryToWriter + ); + } + f = message.getVariablesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 3, + f, + proto.application.ApplicationMetricsVariable.serializeBinaryToWriter + ); + } + f = message.getChartsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 4, + f, + proto.application.ApplicationMetricsChart.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string datasource = 1; + * @return {string} + */ +proto.application.ApplicationMetrics.prototype.getDatasource = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetrics} returns this + */ +proto.application.ApplicationMetrics.prototype.setDatasource = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional ApplicationMetricsChart health = 2; + * @return {?proto.application.ApplicationMetricsChart} + */ +proto.application.ApplicationMetrics.prototype.getHealth = function() { + return /** @type{?proto.application.ApplicationMetricsChart} */ ( + jspb.Message.getWrapperField(this, proto.application.ApplicationMetricsChart, 2)); +}; + + +/** + * @param {?proto.application.ApplicationMetricsChart|undefined} value + * @return {!proto.application.ApplicationMetrics} returns this +*/ +proto.application.ApplicationMetrics.prototype.setHealth = function(value) { + return jspb.Message.setWrapperField(this, 2, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.application.ApplicationMetrics} returns this + */ +proto.application.ApplicationMetrics.prototype.clearHealth = function() { + return this.setHealth(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.application.ApplicationMetrics.prototype.hasHealth = function() { + return jspb.Message.getField(this, 2) != null; +}; + + +/** + * repeated ApplicationMetricsVariable variables = 3; + * @return {!Array} + */ +proto.application.ApplicationMetrics.prototype.getVariablesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.application.ApplicationMetricsVariable, 3)); +}; + + +/** + * @param {!Array} value + * @return {!proto.application.ApplicationMetrics} returns this +*/ +proto.application.ApplicationMetrics.prototype.setVariablesList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 3, value); +}; + + +/** + * @param {!proto.application.ApplicationMetricsVariable=} opt_value + * @param {number=} opt_index + * @return {!proto.application.ApplicationMetricsVariable} + */ +proto.application.ApplicationMetrics.prototype.addVariables = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.application.ApplicationMetricsVariable, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.application.ApplicationMetrics} returns this + */ +proto.application.ApplicationMetrics.prototype.clearVariablesList = function() { + return this.setVariablesList([]); +}; + + +/** + * repeated ApplicationMetricsChart charts = 4; + * @return {!Array} + */ +proto.application.ApplicationMetrics.prototype.getChartsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.application.ApplicationMetricsChart, 4)); +}; + + +/** + * @param {!Array} value + * @return {!proto.application.ApplicationMetrics} returns this +*/ +proto.application.ApplicationMetrics.prototype.setChartsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 4, value); +}; + + +/** + * @param {!proto.application.ApplicationMetricsChart=} opt_value + * @param {number=} opt_index + * @return {!proto.application.ApplicationMetricsChart} + */ +proto.application.ApplicationMetrics.prototype.addCharts = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.application.ApplicationMetricsChart, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.application.ApplicationMetrics} returns this + */ +proto.application.ApplicationMetrics.prototype.clearChartsList = function() { + return this.setChartsList([]); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.application.ApplicationMetricsVariable.repeatedFields_ = [5]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.application.ApplicationMetricsVariable.prototype.toObject = function(opt_includeInstance) { + return proto.application.ApplicationMetricsVariable.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.application.ApplicationMetricsVariable} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationMetricsVariable.toObject = function(includeInstance, msg) { + var f, obj = { + name: jspb.Message.getFieldWithDefault(msg, 1, ""), + label: jspb.Message.getFieldWithDefault(msg, 2, ""), + query: jspb.Message.getFieldWithDefault(msg, 3, ""), + allowall: jspb.Message.getBooleanFieldWithDefault(msg, 4, false), + valuesList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f, + value: jspb.Message.getFieldWithDefault(msg, 6, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.application.ApplicationMetricsVariable} + */ +proto.application.ApplicationMetricsVariable.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.application.ApplicationMetricsVariable; + return proto.application.ApplicationMetricsVariable.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.application.ApplicationMetricsVariable} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.application.ApplicationMetricsVariable} + */ +proto.application.ApplicationMetricsVariable.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setLabel(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setQuery(value); + break; + case 4: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setAllowall(value); + break; + case 5: + var value = /** @type {string} */ (reader.readString()); + msg.addValues(value); + break; + case 6: + var value = /** @type {string} */ (reader.readString()); + msg.setValue(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.application.ApplicationMetricsVariable.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.application.ApplicationMetricsVariable.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.application.ApplicationMetricsVariable} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationMetricsVariable.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getLabel(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getQuery(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getAllowall(); + if (f) { + writer.writeBool( + 4, + f + ); + } + f = message.getValuesList(); + if (f.length > 0) { + writer.writeRepeatedString( + 5, + f + ); + } + f = message.getValue(); + if (f.length > 0) { + writer.writeString( + 6, + f + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.application.ApplicationMetricsVariable.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetricsVariable} returns this + */ +proto.application.ApplicationMetricsVariable.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string label = 2; + * @return {string} + */ +proto.application.ApplicationMetricsVariable.prototype.getLabel = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetricsVariable} returns this + */ +proto.application.ApplicationMetricsVariable.prototype.setLabel = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string query = 3; + * @return {string} + */ +proto.application.ApplicationMetricsVariable.prototype.getQuery = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetricsVariable} returns this + */ +proto.application.ApplicationMetricsVariable.prototype.setQuery = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional bool allowAll = 4; + * @return {boolean} + */ +proto.application.ApplicationMetricsVariable.prototype.getAllowall = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.application.ApplicationMetricsVariable} returns this + */ +proto.application.ApplicationMetricsVariable.prototype.setAllowall = function(value) { + return jspb.Message.setProto3BooleanField(this, 4, value); +}; + + +/** + * repeated string values = 5; + * @return {!Array} + */ +proto.application.ApplicationMetricsVariable.prototype.getValuesList = function() { + return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 5)); +}; + + +/** + * @param {!Array} value + * @return {!proto.application.ApplicationMetricsVariable} returns this + */ +proto.application.ApplicationMetricsVariable.prototype.setValuesList = function(value) { + return jspb.Message.setField(this, 5, value || []); +}; + + +/** + * @param {string} value + * @param {number=} opt_index + * @return {!proto.application.ApplicationMetricsVariable} returns this + */ +proto.application.ApplicationMetricsVariable.prototype.addValues = function(value, opt_index) { + return jspb.Message.addToRepeatedField(this, 5, value, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.application.ApplicationMetricsVariable} returns this + */ +proto.application.ApplicationMetricsVariable.prototype.clearValuesList = function() { + return this.setValuesList([]); +}; + + +/** + * optional string value = 6; + * @return {string} + */ +proto.application.ApplicationMetricsVariable.prototype.getValue = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetricsVariable} returns this + */ +proto.application.ApplicationMetricsVariable.prototype.setValue = function(value) { + return jspb.Message.setProto3StringField(this, 6, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.application.ApplicationMetricsChart.repeatedFields_ = [6]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.application.ApplicationMetricsChart.prototype.toObject = function(opt_includeInstance) { + return proto.application.ApplicationMetricsChart.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.application.ApplicationMetricsChart} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationMetricsChart.toObject = function(includeInstance, msg) { + var f, obj = { + title: jspb.Message.getFieldWithDefault(msg, 1, ""), + type: jspb.Message.getFieldWithDefault(msg, 2, ""), + unit: jspb.Message.getFieldWithDefault(msg, 3, ""), + stacked: jspb.Message.getBooleanFieldWithDefault(msg, 4, false), + size: jspb.Message.getFieldWithDefault(msg, 5, 0), + queriesList: jspb.Message.toObjectList(msg.getQueriesList(), + proto.application.ApplicationMetricsQuery.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.application.ApplicationMetricsChart} + */ +proto.application.ApplicationMetricsChart.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.application.ApplicationMetricsChart; + return proto.application.ApplicationMetricsChart.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.application.ApplicationMetricsChart} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.application.ApplicationMetricsChart} + */ +proto.application.ApplicationMetricsChart.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setTitle(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setType(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setUnit(value); + break; + case 4: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setStacked(value); + break; + case 5: + var value = /** @type {number} */ (reader.readInt64()); + msg.setSize(value); + break; + case 6: + var value = new proto.application.ApplicationMetricsQuery; + reader.readMessage(value,proto.application.ApplicationMetricsQuery.deserializeBinaryFromReader); + msg.addQueries(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.application.ApplicationMetricsChart.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.application.ApplicationMetricsChart.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.application.ApplicationMetricsChart} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationMetricsChart.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getTitle(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getType(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getUnit(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getStacked(); + if (f) { + writer.writeBool( + 4, + f + ); + } + f = message.getSize(); + if (f !== 0) { + writer.writeInt64( + 5, + f + ); + } + f = message.getQueriesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 6, + f, + proto.application.ApplicationMetricsQuery.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string title = 1; + * @return {string} + */ +proto.application.ApplicationMetricsChart.prototype.getTitle = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetricsChart} returns this + */ +proto.application.ApplicationMetricsChart.prototype.setTitle = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string type = 2; + * @return {string} + */ +proto.application.ApplicationMetricsChart.prototype.getType = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetricsChart} returns this + */ +proto.application.ApplicationMetricsChart.prototype.setType = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string unit = 3; + * @return {string} + */ +proto.application.ApplicationMetricsChart.prototype.getUnit = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetricsChart} returns this + */ +proto.application.ApplicationMetricsChart.prototype.setUnit = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional bool stacked = 4; + * @return {boolean} + */ +proto.application.ApplicationMetricsChart.prototype.getStacked = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.application.ApplicationMetricsChart} returns this + */ +proto.application.ApplicationMetricsChart.prototype.setStacked = function(value) { + return jspb.Message.setProto3BooleanField(this, 4, value); +}; + + +/** + * optional int64 size = 5; + * @return {number} + */ +proto.application.ApplicationMetricsChart.prototype.getSize = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.application.ApplicationMetricsChart} returns this + */ +proto.application.ApplicationMetricsChart.prototype.setSize = function(value) { + return jspb.Message.setProto3IntField(this, 5, value); +}; + + +/** + * repeated ApplicationMetricsQuery queries = 6; + * @return {!Array} + */ +proto.application.ApplicationMetricsChart.prototype.getQueriesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.application.ApplicationMetricsQuery, 6)); +}; + + +/** + * @param {!Array} value + * @return {!proto.application.ApplicationMetricsChart} returns this +*/ +proto.application.ApplicationMetricsChart.prototype.setQueriesList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 6, value); +}; + + +/** + * @param {!proto.application.ApplicationMetricsQuery=} opt_value + * @param {number=} opt_index + * @return {!proto.application.ApplicationMetricsQuery} + */ +proto.application.ApplicationMetricsChart.prototype.addQueries = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.application.ApplicationMetricsQuery, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.application.ApplicationMetricsChart} returns this + */ +proto.application.ApplicationMetricsChart.prototype.clearQueriesList = function() { + return this.setQueriesList([]); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.application.ApplicationMetricsQuery.prototype.toObject = function(opt_includeInstance) { + return proto.application.ApplicationMetricsQuery.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.application.ApplicationMetricsQuery} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationMetricsQuery.toObject = function(includeInstance, msg) { + var f, obj = { + query: jspb.Message.getFieldWithDefault(msg, 1, ""), + label: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.application.ApplicationMetricsQuery} + */ +proto.application.ApplicationMetricsQuery.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.application.ApplicationMetricsQuery; + return proto.application.ApplicationMetricsQuery.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.application.ApplicationMetricsQuery} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.application.ApplicationMetricsQuery} + */ +proto.application.ApplicationMetricsQuery.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setQuery(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setLabel(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.application.ApplicationMetricsQuery.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.application.ApplicationMetricsQuery.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.application.ApplicationMetricsQuery} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationMetricsQuery.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getQuery(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getLabel(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional string query = 1; + * @return {string} + */ +proto.application.ApplicationMetricsQuery.prototype.getQuery = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetricsQuery} returns this + */ +proto.application.ApplicationMetricsQuery.prototype.setQuery = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string label = 2; + * @return {string} + */ +proto.application.ApplicationMetricsQuery.prototype.getLabel = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.application.ApplicationMetricsQuery} returns this + */ +proto.application.ApplicationMetricsQuery.prototype.setLabel = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.application.ApplicationLogs.prototype.toObject = function(opt_includeInstance) { + return proto.application.ApplicationLogs.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.application.ApplicationLogs} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationLogs.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.application.ApplicationLogs} + */ +proto.application.ApplicationLogs.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.application.ApplicationLogs; + return proto.application.ApplicationLogs.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.application.ApplicationLogs} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.application.ApplicationLogs} + */ +proto.application.ApplicationLogs.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.application.ApplicationLogs.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.application.ApplicationLogs.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.application.ApplicationLogs} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationLogs.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.application.ApplicationTraces.prototype.toObject = function(opt_includeInstance) { + return proto.application.ApplicationTraces.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.application.ApplicationTraces} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationTraces.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.application.ApplicationTraces} + */ +proto.application.ApplicationTraces.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.application.ApplicationTraces; + return proto.application.ApplicationTraces.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.application.ApplicationTraces} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.application.ApplicationTraces} + */ +proto.application.ApplicationTraces.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.application.ApplicationTraces.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.application.ApplicationTraces.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.application.ApplicationTraces} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.application.ApplicationTraces.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + +goog.object.extend(exports, proto.application); diff --git a/app/src/generated/proto/application_pb_service.d.ts b/app/src/generated/proto/application_pb_service.d.ts new file mode 100644 index 000000000..ecdf33355 --- /dev/null +++ b/app/src/generated/proto/application_pb_service.d.ts @@ -0,0 +1,3 @@ +// package: application +// file: application.proto + diff --git a/app/src/generated/proto/application_pb_service.js b/app/src/generated/proto/application_pb_service.js new file mode 100644 index 000000000..ecdf33355 --- /dev/null +++ b/app/src/generated/proto/application_pb_service.js @@ -0,0 +1,3 @@ +// package: application +// file: application.proto + diff --git a/app/src/generated/proto/applications_grpc_web_pb.js b/app/src/generated/proto/applications_grpc_web_pb.js deleted file mode 100644 index b599064b7..000000000 --- a/app/src/generated/proto/applications_grpc_web_pb.js +++ /dev/null @@ -1,234 +0,0 @@ -/** - * @fileoverview gRPC-Web generated client stub for clusters - * @enhanceable - * @public - */ - -// GENERATED CODE -- DO NOT EDIT! - - -/* eslint-disable */ -// @ts-nocheck - - - -const grpc = {}; -grpc.web = require('grpc-web'); - -const proto = {}; -proto.clusters = require('./applications_pb.js'); - -/** - * @param {string} hostname - * @param {?Object} credentials - * @param {?Object} options - * @constructor - * @struct - * @final - */ -proto.clusters.ApplicationsClient = - function(hostname, credentials, options) { - if (!options) options = {}; - options['format'] = 'text'; - - /** - * @private @const {!grpc.web.GrpcWebClientBase} The client - */ - this.client_ = new grpc.web.GrpcWebClientBase(options); - - /** - * @private @const {string} The hostname - */ - this.hostname_ = hostname; - -}; - - -/** - * @param {string} hostname - * @param {?Object} credentials - * @param {?Object} options - * @constructor - * @struct - * @final - */ -proto.clusters.ApplicationsPromiseClient = - function(hostname, credentials, options) { - if (!options) options = {}; - options['format'] = 'text'; - - /** - * @private @const {!grpc.web.GrpcWebClientBase} The client - */ - this.client_ = new grpc.web.GrpcWebClientBase(options); - - /** - * @private @const {string} The hostname - */ - this.hostname_ = hostname; - -}; - - -/** - * @const - * @type {!grpc.web.MethodDescriptor< - * !proto.clusters.GetApplicationsRequest, - * !proto.clusters.GetApplicationsResponse>} - */ -const methodDescriptor_Applications_GetApplications = new grpc.web.MethodDescriptor( - '/clusters.Applications/GetApplications', - grpc.web.MethodType.UNARY, - proto.clusters.GetApplicationsRequest, - proto.clusters.GetApplicationsResponse, - /** - * @param {!proto.clusters.GetApplicationsRequest} request - * @return {!Uint8Array} - */ - function(request) { - return request.serializeBinary(); - }, - proto.clusters.GetApplicationsResponse.deserializeBinary -); - - -/** - * @const - * @type {!grpc.web.AbstractClientBase.MethodInfo< - * !proto.clusters.GetApplicationsRequest, - * !proto.clusters.GetApplicationsResponse>} - */ -const methodInfo_Applications_GetApplications = new grpc.web.AbstractClientBase.MethodInfo( - proto.clusters.GetApplicationsResponse, - /** - * @param {!proto.clusters.GetApplicationsRequest} request - * @return {!Uint8Array} - */ - function(request) { - return request.serializeBinary(); - }, - proto.clusters.GetApplicationsResponse.deserializeBinary -); - - -/** - * @param {!proto.clusters.GetApplicationsRequest} request The - * request proto - * @param {?Object} metadata User defined - * call metadata - * @param {function(?grpc.web.Error, ?proto.clusters.GetApplicationsResponse)} - * callback The callback function(error, response) - * @return {!grpc.web.ClientReadableStream|undefined} - * The XHR Node Readable Stream - */ -proto.clusters.ApplicationsClient.prototype.getApplications = - function(request, metadata, callback) { - return this.client_.rpcCall(this.hostname_ + - '/clusters.Applications/GetApplications', - request, - metadata || {}, - methodDescriptor_Applications_GetApplications, - callback); -}; - - -/** - * @param {!proto.clusters.GetApplicationsRequest} request The - * request proto - * @param {?Object} metadata User defined - * call metadata - * @return {!Promise} - * Promise that resolves to the response - */ -proto.clusters.ApplicationsPromiseClient.prototype.getApplications = - function(request, metadata) { - return this.client_.unaryCall(this.hostname_ + - '/clusters.Applications/GetApplications', - request, - metadata || {}, - methodDescriptor_Applications_GetApplications); -}; - - -/** - * @const - * @type {!grpc.web.MethodDescriptor< - * !proto.clusters.GetApplicationRequest, - * !proto.clusters.GetApplicationResponse>} - */ -const methodDescriptor_Applications_GetApplication = new grpc.web.MethodDescriptor( - '/clusters.Applications/GetApplication', - grpc.web.MethodType.UNARY, - proto.clusters.GetApplicationRequest, - proto.clusters.GetApplicationResponse, - /** - * @param {!proto.clusters.GetApplicationRequest} request - * @return {!Uint8Array} - */ - function(request) { - return request.serializeBinary(); - }, - proto.clusters.GetApplicationResponse.deserializeBinary -); - - -/** - * @const - * @type {!grpc.web.AbstractClientBase.MethodInfo< - * !proto.clusters.GetApplicationRequest, - * !proto.clusters.GetApplicationResponse>} - */ -const methodInfo_Applications_GetApplication = new grpc.web.AbstractClientBase.MethodInfo( - proto.clusters.GetApplicationResponse, - /** - * @param {!proto.clusters.GetApplicationRequest} request - * @return {!Uint8Array} - */ - function(request) { - return request.serializeBinary(); - }, - proto.clusters.GetApplicationResponse.deserializeBinary -); - - -/** - * @param {!proto.clusters.GetApplicationRequest} request The - * request proto - * @param {?Object} metadata User defined - * call metadata - * @param {function(?grpc.web.Error, ?proto.clusters.GetApplicationResponse)} - * callback The callback function(error, response) - * @return {!grpc.web.ClientReadableStream|undefined} - * The XHR Node Readable Stream - */ -proto.clusters.ApplicationsClient.prototype.getApplication = - function(request, metadata, callback) { - return this.client_.rpcCall(this.hostname_ + - '/clusters.Applications/GetApplication', - request, - metadata || {}, - methodDescriptor_Applications_GetApplication, - callback); -}; - - -/** - * @param {!proto.clusters.GetApplicationRequest} request The - * request proto - * @param {?Object} metadata User defined - * call metadata - * @return {!Promise} - * Promise that resolves to the response - */ -proto.clusters.ApplicationsPromiseClient.prototype.getApplication = - function(request, metadata) { - return this.client_.unaryCall(this.hostname_ + - '/clusters.Applications/GetApplication', - request, - metadata || {}, - methodDescriptor_Applications_GetApplication); -}; - - -module.exports = proto.clusters; - diff --git a/app/src/generated/proto/applications_pb.d.ts b/app/src/generated/proto/applications_pb.d.ts deleted file mode 100644 index 944aa3f63..000000000 --- a/app/src/generated/proto/applications_pb.d.ts +++ /dev/null @@ -1,95 +0,0 @@ -// package: applications -// file: applications.proto - -import * as jspb from "google-protobuf"; - -export class Application extends jspb.Message { - getCluster(): string; - setCluster(value: string): void; - - getNamespace(): string; - setNamespace(value: string): void; - - getName(): string; - setName(value: string): void; - - clearLinksList(): void; - getLinksList(): Array; - setLinksList(value: Array): void; - addLinks(value?: ApplicationLink, index?: number): ApplicationLink; - - clearResourcesList(): void; - getResourcesList(): Array; - setResourcesList(value: Array): void; - addResources(value?: ApplicationResources, index?: number): ApplicationResources; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): Application.AsObject; - static toObject(includeInstance: boolean, msg: Application): Application.AsObject; - static extensions: {[key: number]: jspb.ExtensionFieldInfo}; - static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; - static serializeBinaryToWriter(message: Application, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): Application; - static deserializeBinaryFromReader(message: Application, reader: jspb.BinaryReader): Application; -} - -export namespace Application { - export type AsObject = { - cluster: string, - namespace: string, - name: string, - linksList: Array, - resourcesList: Array, - } -} - -export class ApplicationLink extends jspb.Message { - getTitle(): string; - setTitle(value: string): void; - - getLink(): string; - setLink(value: string): void; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): ApplicationLink.AsObject; - static toObject(includeInstance: boolean, msg: ApplicationLink): ApplicationLink.AsObject; - static extensions: {[key: number]: jspb.ExtensionFieldInfo}; - static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; - static serializeBinaryToWriter(message: ApplicationLink, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): ApplicationLink; - static deserializeBinaryFromReader(message: ApplicationLink, reader: jspb.BinaryReader): ApplicationLink; -} - -export namespace ApplicationLink { - export type AsObject = { - title: string, - link: string, - } -} - -export class ApplicationResources extends jspb.Message { - clearKindsList(): void; - getKindsList(): Array; - setKindsList(value: Array): void; - addKinds(value: string, index?: number): string; - - getSelector(): string; - setSelector(value: string): void; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): ApplicationResources.AsObject; - static toObject(includeInstance: boolean, msg: ApplicationResources): ApplicationResources.AsObject; - static extensions: {[key: number]: jspb.ExtensionFieldInfo}; - static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; - static serializeBinaryToWriter(message: ApplicationResources, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): ApplicationResources; - static deserializeBinaryFromReader(message: ApplicationResources, reader: jspb.BinaryReader): ApplicationResources; -} - -export namespace ApplicationResources { - export type AsObject = { - kindsList: Array, - selector: string, - } -} - diff --git a/app/src/generated/proto/applications_pb.js b/app/src/generated/proto/applications_pb.js deleted file mode 100644 index f93a1ffe7..000000000 --- a/app/src/generated/proto/applications_pb.js +++ /dev/null @@ -1,732 +0,0 @@ -// source: applications.proto -/** - * @fileoverview - * @enhanceable - * @suppress {messageConventions} JS Compiler reports an error if a variable or - * field starts with 'MSG_' and isn't a translatable message. - * @public - */ -// GENERATED CODE -- DO NOT EDIT! -/* eslint-disable */ -// @ts-nocheck - -var jspb = require('google-protobuf'); -var goog = jspb; -var global = Function('return this')(); - -goog.exportSymbol('proto.applications.Application', null, global); -goog.exportSymbol('proto.applications.ApplicationLink', null, global); -goog.exportSymbol('proto.applications.ApplicationResources', null, global); -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.applications.Application = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, proto.applications.Application.repeatedFields_, null); -}; -goog.inherits(proto.applications.Application, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.applications.Application.displayName = 'proto.applications.Application'; -} -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.applications.ApplicationLink = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, null, null); -}; -goog.inherits(proto.applications.ApplicationLink, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.applications.ApplicationLink.displayName = 'proto.applications.ApplicationLink'; -} -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.applications.ApplicationResources = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, proto.applications.ApplicationResources.repeatedFields_, null); -}; -goog.inherits(proto.applications.ApplicationResources, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.applications.ApplicationResources.displayName = 'proto.applications.ApplicationResources'; -} - -/** - * List of repeated fields within this message type. - * @private {!Array} - * @const - */ -proto.applications.Application.repeatedFields_ = [4,5]; - - - -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * Optional fields that are not set will be set to undefined. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * net/proto2/compiler/js/internal/generator.cc#kKeyword. - * @param {boolean=} opt_includeInstance Deprecated. whether to include the - * JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @return {!Object} - */ -proto.applications.Application.prototype.toObject = function(opt_includeInstance) { - return proto.applications.Application.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Deprecated. Whether to include - * the JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.applications.Application} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.applications.Application.toObject = function(includeInstance, msg) { - var f, obj = { - cluster: jspb.Message.getFieldWithDefault(msg, 1, ""), - namespace: jspb.Message.getFieldWithDefault(msg, 2, ""), - name: jspb.Message.getFieldWithDefault(msg, 3, ""), - linksList: jspb.Message.toObjectList(msg.getLinksList(), - proto.applications.ApplicationLink.toObject, includeInstance), - resourcesList: jspb.Message.toObjectList(msg.getResourcesList(), - proto.applications.ApplicationResources.toObject, includeInstance) - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.applications.Application} - */ -proto.applications.Application.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.applications.Application; - return proto.applications.Application.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.applications.Application} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.applications.Application} - */ -proto.applications.Application.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {string} */ (reader.readString()); - msg.setCluster(value); - break; - case 2: - var value = /** @type {string} */ (reader.readString()); - msg.setNamespace(value); - break; - case 3: - var value = /** @type {string} */ (reader.readString()); - msg.setName(value); - break; - case 4: - var value = new proto.applications.ApplicationLink; - reader.readMessage(value,proto.applications.ApplicationLink.deserializeBinaryFromReader); - msg.addLinks(value); - break; - case 5: - var value = new proto.applications.ApplicationResources; - reader.readMessage(value,proto.applications.ApplicationResources.deserializeBinaryFromReader); - msg.addResources(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.applications.Application.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.applications.Application.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.applications.Application} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.applications.Application.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getCluster(); - if (f.length > 0) { - writer.writeString( - 1, - f - ); - } - f = message.getNamespace(); - if (f.length > 0) { - writer.writeString( - 2, - f - ); - } - f = message.getName(); - if (f.length > 0) { - writer.writeString( - 3, - f - ); - } - f = message.getLinksList(); - if (f.length > 0) { - writer.writeRepeatedMessage( - 4, - f, - proto.applications.ApplicationLink.serializeBinaryToWriter - ); - } - f = message.getResourcesList(); - if (f.length > 0) { - writer.writeRepeatedMessage( - 5, - f, - proto.applications.ApplicationResources.serializeBinaryToWriter - ); - } -}; - - -/** - * optional string cluster = 1; - * @return {string} - */ -proto.applications.Application.prototype.getCluster = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); -}; - - -/** - * @param {string} value - * @return {!proto.applications.Application} returns this - */ -proto.applications.Application.prototype.setCluster = function(value) { - return jspb.Message.setProto3StringField(this, 1, value); -}; - - -/** - * optional string namespace = 2; - * @return {string} - */ -proto.applications.Application.prototype.getNamespace = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); -}; - - -/** - * @param {string} value - * @return {!proto.applications.Application} returns this - */ -proto.applications.Application.prototype.setNamespace = function(value) { - return jspb.Message.setProto3StringField(this, 2, value); -}; - - -/** - * optional string name = 3; - * @return {string} - */ -proto.applications.Application.prototype.getName = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); -}; - - -/** - * @param {string} value - * @return {!proto.applications.Application} returns this - */ -proto.applications.Application.prototype.setName = function(value) { - return jspb.Message.setProto3StringField(this, 3, value); -}; - - -/** - * repeated ApplicationLink links = 4; - * @return {!Array} - */ -proto.applications.Application.prototype.getLinksList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, proto.applications.ApplicationLink, 4)); -}; - - -/** - * @param {!Array} value - * @return {!proto.applications.Application} returns this -*/ -proto.applications.Application.prototype.setLinksList = function(value) { - return jspb.Message.setRepeatedWrapperField(this, 4, value); -}; - - -/** - * @param {!proto.applications.ApplicationLink=} opt_value - * @param {number=} opt_index - * @return {!proto.applications.ApplicationLink} - */ -proto.applications.Application.prototype.addLinks = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.applications.ApplicationLink, opt_index); -}; - - -/** - * Clears the list making it empty but non-null. - * @return {!proto.applications.Application} returns this - */ -proto.applications.Application.prototype.clearLinksList = function() { - return this.setLinksList([]); -}; - - -/** - * repeated ApplicationResources resources = 5; - * @return {!Array} - */ -proto.applications.Application.prototype.getResourcesList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, proto.applications.ApplicationResources, 5)); -}; - - -/** - * @param {!Array} value - * @return {!proto.applications.Application} returns this -*/ -proto.applications.Application.prototype.setResourcesList = function(value) { - return jspb.Message.setRepeatedWrapperField(this, 5, value); -}; - - -/** - * @param {!proto.applications.ApplicationResources=} opt_value - * @param {number=} opt_index - * @return {!proto.applications.ApplicationResources} - */ -proto.applications.Application.prototype.addResources = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.applications.ApplicationResources, opt_index); -}; - - -/** - * Clears the list making it empty but non-null. - * @return {!proto.applications.Application} returns this - */ -proto.applications.Application.prototype.clearResourcesList = function() { - return this.setResourcesList([]); -}; - - - - - -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * Optional fields that are not set will be set to undefined. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * net/proto2/compiler/js/internal/generator.cc#kKeyword. - * @param {boolean=} opt_includeInstance Deprecated. whether to include the - * JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @return {!Object} - */ -proto.applications.ApplicationLink.prototype.toObject = function(opt_includeInstance) { - return proto.applications.ApplicationLink.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Deprecated. Whether to include - * the JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.applications.ApplicationLink} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.applications.ApplicationLink.toObject = function(includeInstance, msg) { - var f, obj = { - title: jspb.Message.getFieldWithDefault(msg, 1, ""), - link: jspb.Message.getFieldWithDefault(msg, 2, "") - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.applications.ApplicationLink} - */ -proto.applications.ApplicationLink.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.applications.ApplicationLink; - return proto.applications.ApplicationLink.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.applications.ApplicationLink} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.applications.ApplicationLink} - */ -proto.applications.ApplicationLink.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {string} */ (reader.readString()); - msg.setTitle(value); - break; - case 2: - var value = /** @type {string} */ (reader.readString()); - msg.setLink(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.applications.ApplicationLink.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.applications.ApplicationLink.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.applications.ApplicationLink} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.applications.ApplicationLink.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getTitle(); - if (f.length > 0) { - writer.writeString( - 1, - f - ); - } - f = message.getLink(); - if (f.length > 0) { - writer.writeString( - 2, - f - ); - } -}; - - -/** - * optional string title = 1; - * @return {string} - */ -proto.applications.ApplicationLink.prototype.getTitle = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); -}; - - -/** - * @param {string} value - * @return {!proto.applications.ApplicationLink} returns this - */ -proto.applications.ApplicationLink.prototype.setTitle = function(value) { - return jspb.Message.setProto3StringField(this, 1, value); -}; - - -/** - * optional string link = 2; - * @return {string} - */ -proto.applications.ApplicationLink.prototype.getLink = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); -}; - - -/** - * @param {string} value - * @return {!proto.applications.ApplicationLink} returns this - */ -proto.applications.ApplicationLink.prototype.setLink = function(value) { - return jspb.Message.setProto3StringField(this, 2, value); -}; - - - -/** - * List of repeated fields within this message type. - * @private {!Array} - * @const - */ -proto.applications.ApplicationResources.repeatedFields_ = [1]; - - - -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * Optional fields that are not set will be set to undefined. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * net/proto2/compiler/js/internal/generator.cc#kKeyword. - * @param {boolean=} opt_includeInstance Deprecated. whether to include the - * JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @return {!Object} - */ -proto.applications.ApplicationResources.prototype.toObject = function(opt_includeInstance) { - return proto.applications.ApplicationResources.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Deprecated. Whether to include - * the JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.applications.ApplicationResources} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.applications.ApplicationResources.toObject = function(includeInstance, msg) { - var f, obj = { - kindsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f, - selector: jspb.Message.getFieldWithDefault(msg, 2, "") - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.applications.ApplicationResources} - */ -proto.applications.ApplicationResources.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.applications.ApplicationResources; - return proto.applications.ApplicationResources.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.applications.ApplicationResources} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.applications.ApplicationResources} - */ -proto.applications.ApplicationResources.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {string} */ (reader.readString()); - msg.addKinds(value); - break; - case 2: - var value = /** @type {string} */ (reader.readString()); - msg.setSelector(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.applications.ApplicationResources.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.applications.ApplicationResources.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.applications.ApplicationResources} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.applications.ApplicationResources.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getKindsList(); - if (f.length > 0) { - writer.writeRepeatedString( - 1, - f - ); - } - f = message.getSelector(); - if (f.length > 0) { - writer.writeString( - 2, - f - ); - } -}; - - -/** - * repeated string kinds = 1; - * @return {!Array} - */ -proto.applications.ApplicationResources.prototype.getKindsList = function() { - return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1)); -}; - - -/** - * @param {!Array} value - * @return {!proto.applications.ApplicationResources} returns this - */ -proto.applications.ApplicationResources.prototype.setKindsList = function(value) { - return jspb.Message.setField(this, 1, value || []); -}; - - -/** - * @param {string} value - * @param {number=} opt_index - * @return {!proto.applications.ApplicationResources} returns this - */ -proto.applications.ApplicationResources.prototype.addKinds = function(value, opt_index) { - return jspb.Message.addToRepeatedField(this, 1, value, opt_index); -}; - - -/** - * Clears the list making it empty but non-null. - * @return {!proto.applications.ApplicationResources} returns this - */ -proto.applications.ApplicationResources.prototype.clearKindsList = function() { - return this.setKindsList([]); -}; - - -/** - * optional string selector = 2; - * @return {string} - */ -proto.applications.ApplicationResources.prototype.getSelector = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); -}; - - -/** - * @param {string} value - * @return {!proto.applications.ApplicationResources} returns this - */ -proto.applications.ApplicationResources.prototype.setSelector = function(value) { - return jspb.Message.setProto3StringField(this, 2, value); -}; - - -goog.object.extend(exports, proto.applications); diff --git a/app/src/generated/proto/applications_pb_service.d.ts b/app/src/generated/proto/applications_pb_service.d.ts deleted file mode 100644 index 56a326391..000000000 --- a/app/src/generated/proto/applications_pb_service.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -// package: applications -// file: applications.proto - diff --git a/app/src/generated/proto/applications_pb_service.js b/app/src/generated/proto/applications_pb_service.js deleted file mode 100644 index 56a326391..000000000 --- a/app/src/generated/proto/applications_pb_service.js +++ /dev/null @@ -1,3 +0,0 @@ -// package: applications -// file: applications.proto - diff --git a/app/src/generated/proto/clusters_grpc_web_pb.js b/app/src/generated/proto/clusters_grpc_web_pb.js index 92ececac8..4ec843f82 100644 --- a/app/src/generated/proto/clusters_grpc_web_pb.js +++ b/app/src/generated/proto/clusters_grpc_web_pb.js @@ -16,7 +16,7 @@ const grpc = {}; grpc.web = require('grpc-web'); -var applications_pb = require('./applications_pb.js') +var application_pb = require('./application_pb.js') const proto = {}; proto.clusters = require('./clusters_pb.js'); diff --git a/app/src/generated/proto/clusters_pb.d.ts b/app/src/generated/proto/clusters_pb.d.ts index 6dd424baf..39ab5c1e3 100644 --- a/app/src/generated/proto/clusters_pb.d.ts +++ b/app/src/generated/proto/clusters_pb.d.ts @@ -2,7 +2,7 @@ // file: clusters.proto import * as jspb from "google-protobuf"; -import * as applications_pb from "./applications_pb"; +import * as application_pb from "./application_pb"; export class GetClustersRequest extends jspb.Message { serializeBinary(): Uint8Array; @@ -210,9 +210,9 @@ export namespace GetApplicationsRequest { export class GetApplicationsResponse extends jspb.Message { clearApplicationsList(): void; - getApplicationsList(): Array; - setApplicationsList(value: Array): void; - addApplications(value?: applications_pb.Application, index?: number): applications_pb.Application; + getApplicationsList(): Array; + setApplicationsList(value: Array): void; + addApplications(value?: application_pb.Application, index?: number): application_pb.Application; serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): GetApplicationsResponse.AsObject; @@ -226,7 +226,7 @@ export class GetApplicationsResponse extends jspb.Message { export namespace GetApplicationsResponse { export type AsObject = { - applicationsList: Array, + applicationsList: Array, } } @@ -261,8 +261,8 @@ export namespace GetApplicationRequest { export class GetApplicationResponse extends jspb.Message { hasApplication(): boolean; clearApplication(): void; - getApplication(): applications_pb.Application | undefined; - setApplication(value?: applications_pb.Application): void; + getApplication(): application_pb.Application | undefined; + setApplication(value?: application_pb.Application): void; serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): GetApplicationResponse.AsObject; @@ -276,7 +276,7 @@ export class GetApplicationResponse extends jspb.Message { export namespace GetApplicationResponse { export type AsObject = { - application?: applications_pb.Application.AsObject, + application?: application_pb.Application.AsObject, } } diff --git a/app/src/generated/proto/clusters_pb.js b/app/src/generated/proto/clusters_pb.js index 0ed67d416..44c9da96f 100644 --- a/app/src/generated/proto/clusters_pb.js +++ b/app/src/generated/proto/clusters_pb.js @@ -14,8 +14,8 @@ var jspb = require('google-protobuf'); var goog = jspb; var global = Function('return this')(); -var applications_pb = require('./applications_pb.js'); -goog.object.extend(proto, applications_pb); +var application_pb = require('./application_pb.js'); +goog.object.extend(proto, application_pb); goog.exportSymbol('proto.clusters.GetApplicationRequest', null, global); goog.exportSymbol('proto.clusters.GetApplicationResponse', null, global); goog.exportSymbol('proto.clusters.GetApplicationsRequest', null, global); @@ -1747,7 +1747,7 @@ proto.clusters.GetApplicationsResponse.prototype.toObject = function(opt_include proto.clusters.GetApplicationsResponse.toObject = function(includeInstance, msg) { var f, obj = { applicationsList: jspb.Message.toObjectList(msg.getApplicationsList(), - applications_pb.Application.toObject, includeInstance) + application_pb.Application.toObject, includeInstance) }; if (includeInstance) { @@ -1785,8 +1785,8 @@ proto.clusters.GetApplicationsResponse.deserializeBinaryFromReader = function(ms var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new applications_pb.Application; - reader.readMessage(value,applications_pb.Application.deserializeBinaryFromReader); + var value = new application_pb.Application; + reader.readMessage(value,application_pb.Application.deserializeBinaryFromReader); msg.addApplications(value); break; default: @@ -1823,24 +1823,24 @@ proto.clusters.GetApplicationsResponse.serializeBinaryToWriter = function(messag writer.writeRepeatedMessage( 1, f, - applications_pb.Application.serializeBinaryToWriter + application_pb.Application.serializeBinaryToWriter ); } }; /** - * repeated applications.Application applications = 1; - * @return {!Array} + * repeated application.Application applications = 1; + * @return {!Array} */ proto.clusters.GetApplicationsResponse.prototype.getApplicationsList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, applications_pb.Application, 1)); + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, application_pb.Application, 1)); }; /** - * @param {!Array} value + * @param {!Array} value * @return {!proto.clusters.GetApplicationsResponse} returns this */ proto.clusters.GetApplicationsResponse.prototype.setApplicationsList = function(value) { @@ -1849,12 +1849,12 @@ proto.clusters.GetApplicationsResponse.prototype.setApplicationsList = function( /** - * @param {!proto.applications.Application=} opt_value + * @param {!proto.application.Application=} opt_value * @param {number=} opt_index - * @return {!proto.applications.Application} + * @return {!proto.application.Application} */ proto.clusters.GetApplicationsResponse.prototype.addApplications = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.applications.Application, opt_index); + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.application.Application, opt_index); }; @@ -2089,7 +2089,7 @@ proto.clusters.GetApplicationResponse.prototype.toObject = function(opt_includeI */ proto.clusters.GetApplicationResponse.toObject = function(includeInstance, msg) { var f, obj = { - application: (f = msg.getApplication()) && applications_pb.Application.toObject(includeInstance, f) + application: (f = msg.getApplication()) && application_pb.Application.toObject(includeInstance, f) }; if (includeInstance) { @@ -2127,8 +2127,8 @@ proto.clusters.GetApplicationResponse.deserializeBinaryFromReader = function(msg var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new applications_pb.Application; - reader.readMessage(value,applications_pb.Application.deserializeBinaryFromReader); + var value = new application_pb.Application; + reader.readMessage(value,application_pb.Application.deserializeBinaryFromReader); msg.setApplication(value); break; default: @@ -2165,24 +2165,24 @@ proto.clusters.GetApplicationResponse.serializeBinaryToWriter = function(message writer.writeMessage( 1, f, - applications_pb.Application.serializeBinaryToWriter + application_pb.Application.serializeBinaryToWriter ); } }; /** - * optional applications.Application application = 1; - * @return {?proto.applications.Application} + * optional application.Application application = 1; + * @return {?proto.application.Application} */ proto.clusters.GetApplicationResponse.prototype.getApplication = function() { - return /** @type{?proto.applications.Application} */ ( - jspb.Message.getWrapperField(this, applications_pb.Application, 1)); + return /** @type{?proto.application.Application} */ ( + jspb.Message.getWrapperField(this, application_pb.Application, 1)); }; /** - * @param {?proto.applications.Application|undefined} value + * @param {?proto.application.Application|undefined} value * @return {!proto.clusters.GetApplicationResponse} returns this */ proto.clusters.GetApplicationResponse.prototype.setApplication = function(value) { diff --git a/app/src/generated/proto/datasources_grpc_web_pb.js b/app/src/generated/proto/datasources_grpc_web_pb.js new file mode 100644 index 000000000..e6774f235 --- /dev/null +++ b/app/src/generated/proto/datasources_grpc_web_pb.js @@ -0,0 +1,476 @@ +/** + * @fileoverview gRPC-Web generated client stub for datasources + * @enhanceable + * @public + */ + +// GENERATED CODE -- DO NOT EDIT! + + +/* eslint-disable */ +// @ts-nocheck + + + +const grpc = {}; +grpc.web = require('grpc-web'); + + +var application_pb = require('./application_pb.js') +const proto = {}; +proto.datasources = require('./datasources_pb.js'); + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?Object} options + * @constructor + * @struct + * @final + */ +proto.datasources.DatasourcesClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options['format'] = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname; + +}; + + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?Object} options + * @constructor + * @struct + * @final + */ +proto.datasources.DatasourcesPromiseClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options['format'] = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname; + +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.datasources.GetDatasourceRequest, + * !proto.datasources.GetDatasourceResponse>} + */ +const methodDescriptor_Datasources_GetDatasource = new grpc.web.MethodDescriptor( + '/datasources.Datasources/GetDatasource', + grpc.web.MethodType.UNARY, + proto.datasources.GetDatasourceRequest, + proto.datasources.GetDatasourceResponse, + /** + * @param {!proto.datasources.GetDatasourceRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetDatasourceResponse.deserializeBinary +); + + +/** + * @const + * @type {!grpc.web.AbstractClientBase.MethodInfo< + * !proto.datasources.GetDatasourceRequest, + * !proto.datasources.GetDatasourceResponse>} + */ +const methodInfo_Datasources_GetDatasource = new grpc.web.AbstractClientBase.MethodInfo( + proto.datasources.GetDatasourceResponse, + /** + * @param {!proto.datasources.GetDatasourceRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetDatasourceResponse.deserializeBinary +); + + +/** + * @param {!proto.datasources.GetDatasourceRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.Error, ?proto.datasources.GetDatasourceResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.datasources.DatasourcesClient.prototype.getDatasource = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/datasources.Datasources/GetDatasource', + request, + metadata || {}, + methodDescriptor_Datasources_GetDatasource, + callback); +}; + + +/** + * @param {!proto.datasources.GetDatasourceRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.datasources.DatasourcesPromiseClient.prototype.getDatasource = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/datasources.Datasources/GetDatasource', + request, + metadata || {}, + methodDescriptor_Datasources_GetDatasource); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.datasources.GetVariablesRequest, + * !proto.datasources.GetVariablesResponse>} + */ +const methodDescriptor_Datasources_GetVariables = new grpc.web.MethodDescriptor( + '/datasources.Datasources/GetVariables', + grpc.web.MethodType.UNARY, + proto.datasources.GetVariablesRequest, + proto.datasources.GetVariablesResponse, + /** + * @param {!proto.datasources.GetVariablesRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetVariablesResponse.deserializeBinary +); + + +/** + * @const + * @type {!grpc.web.AbstractClientBase.MethodInfo< + * !proto.datasources.GetVariablesRequest, + * !proto.datasources.GetVariablesResponse>} + */ +const methodInfo_Datasources_GetVariables = new grpc.web.AbstractClientBase.MethodInfo( + proto.datasources.GetVariablesResponse, + /** + * @param {!proto.datasources.GetVariablesRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetVariablesResponse.deserializeBinary +); + + +/** + * @param {!proto.datasources.GetVariablesRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.Error, ?proto.datasources.GetVariablesResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.datasources.DatasourcesClient.prototype.getVariables = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/datasources.Datasources/GetVariables', + request, + metadata || {}, + methodDescriptor_Datasources_GetVariables, + callback); +}; + + +/** + * @param {!proto.datasources.GetVariablesRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.datasources.DatasourcesPromiseClient.prototype.getVariables = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/datasources.Datasources/GetVariables', + request, + metadata || {}, + methodDescriptor_Datasources_GetVariables); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.datasources.GetMetricsRequest, + * !proto.datasources.GetMetricsResponse>} + */ +const methodDescriptor_Datasources_GetMetrics = new grpc.web.MethodDescriptor( + '/datasources.Datasources/GetMetrics', + grpc.web.MethodType.UNARY, + proto.datasources.GetMetricsRequest, + proto.datasources.GetMetricsResponse, + /** + * @param {!proto.datasources.GetMetricsRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetMetricsResponse.deserializeBinary +); + + +/** + * @const + * @type {!grpc.web.AbstractClientBase.MethodInfo< + * !proto.datasources.GetMetricsRequest, + * !proto.datasources.GetMetricsResponse>} + */ +const methodInfo_Datasources_GetMetrics = new grpc.web.AbstractClientBase.MethodInfo( + proto.datasources.GetMetricsResponse, + /** + * @param {!proto.datasources.GetMetricsRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetMetricsResponse.deserializeBinary +); + + +/** + * @param {!proto.datasources.GetMetricsRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.Error, ?proto.datasources.GetMetricsResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.datasources.DatasourcesClient.prototype.getMetrics = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/datasources.Datasources/GetMetrics', + request, + metadata || {}, + methodDescriptor_Datasources_GetMetrics, + callback); +}; + + +/** + * @param {!proto.datasources.GetMetricsRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.datasources.DatasourcesPromiseClient.prototype.getMetrics = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/datasources.Datasources/GetMetrics', + request, + metadata || {}, + methodDescriptor_Datasources_GetMetrics); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.datasources.GetLogsRequest, + * !proto.datasources.GetLogsResponse>} + */ +const methodDescriptor_Datasources_GetLogs = new grpc.web.MethodDescriptor( + '/datasources.Datasources/GetLogs', + grpc.web.MethodType.UNARY, + proto.datasources.GetLogsRequest, + proto.datasources.GetLogsResponse, + /** + * @param {!proto.datasources.GetLogsRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetLogsResponse.deserializeBinary +); + + +/** + * @const + * @type {!grpc.web.AbstractClientBase.MethodInfo< + * !proto.datasources.GetLogsRequest, + * !proto.datasources.GetLogsResponse>} + */ +const methodInfo_Datasources_GetLogs = new grpc.web.AbstractClientBase.MethodInfo( + proto.datasources.GetLogsResponse, + /** + * @param {!proto.datasources.GetLogsRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetLogsResponse.deserializeBinary +); + + +/** + * @param {!proto.datasources.GetLogsRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.Error, ?proto.datasources.GetLogsResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.datasources.DatasourcesClient.prototype.getLogs = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/datasources.Datasources/GetLogs', + request, + metadata || {}, + methodDescriptor_Datasources_GetLogs, + callback); +}; + + +/** + * @param {!proto.datasources.GetLogsRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.datasources.DatasourcesPromiseClient.prototype.getLogs = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/datasources.Datasources/GetLogs', + request, + metadata || {}, + methodDescriptor_Datasources_GetLogs); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.datasources.GetTracesRequest, + * !proto.datasources.GetTracesResponse>} + */ +const methodDescriptor_Datasources_GetTraces = new grpc.web.MethodDescriptor( + '/datasources.Datasources/GetTraces', + grpc.web.MethodType.UNARY, + proto.datasources.GetTracesRequest, + proto.datasources.GetTracesResponse, + /** + * @param {!proto.datasources.GetTracesRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetTracesResponse.deserializeBinary +); + + +/** + * @const + * @type {!grpc.web.AbstractClientBase.MethodInfo< + * !proto.datasources.GetTracesRequest, + * !proto.datasources.GetTracesResponse>} + */ +const methodInfo_Datasources_GetTraces = new grpc.web.AbstractClientBase.MethodInfo( + proto.datasources.GetTracesResponse, + /** + * @param {!proto.datasources.GetTracesRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.datasources.GetTracesResponse.deserializeBinary +); + + +/** + * @param {!proto.datasources.GetTracesRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.Error, ?proto.datasources.GetTracesResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.datasources.DatasourcesClient.prototype.getTraces = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/datasources.Datasources/GetTraces', + request, + metadata || {}, + methodDescriptor_Datasources_GetTraces, + callback); +}; + + +/** + * @param {!proto.datasources.GetTracesRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.datasources.DatasourcesPromiseClient.prototype.getTraces = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/datasources.Datasources/GetTraces', + request, + metadata || {}, + methodDescriptor_Datasources_GetTraces); +}; + + +module.exports = proto.datasources; + diff --git a/app/src/generated/proto/datasources_pb.d.ts b/app/src/generated/proto/datasources_pb.d.ts new file mode 100644 index 000000000..749033908 --- /dev/null +++ b/app/src/generated/proto/datasources_pb.d.ts @@ -0,0 +1,334 @@ +// package: datasources +// file: datasources.proto + +import * as jspb from "google-protobuf"; +import * as application_pb from "./application_pb"; + +export class GetDatasourceRequest extends jspb.Message { + getName(): string; + setName(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetDatasourceRequest.AsObject; + static toObject(includeInstance: boolean, msg: GetDatasourceRequest): GetDatasourceRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetDatasourceRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetDatasourceRequest; + static deserializeBinaryFromReader(message: GetDatasourceRequest, reader: jspb.BinaryReader): GetDatasourceRequest; +} + +export namespace GetDatasourceRequest { + export type AsObject = { + name: string, + } +} + +export class GetDatasourceResponse extends jspb.Message { + getName(): string; + setName(value: string): void; + + getType(): string; + setType(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetDatasourceResponse.AsObject; + static toObject(includeInstance: boolean, msg: GetDatasourceResponse): GetDatasourceResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetDatasourceResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetDatasourceResponse; + static deserializeBinaryFromReader(message: GetDatasourceResponse, reader: jspb.BinaryReader): GetDatasourceResponse; +} + +export namespace GetDatasourceResponse { + export type AsObject = { + name: string, + type: string, + } +} + +export class GetVariablesRequest extends jspb.Message { + getName(): string; + setName(value: string): void; + + hasOptions(): boolean; + clearOptions(): void; + getOptions(): DatasourceOptions | undefined; + setOptions(value?: DatasourceOptions): void; + + clearVariablesList(): void; + getVariablesList(): Array; + setVariablesList(value: Array): void; + addVariables(value?: application_pb.ApplicationMetricsVariable, index?: number): application_pb.ApplicationMetricsVariable; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetVariablesRequest.AsObject; + static toObject(includeInstance: boolean, msg: GetVariablesRequest): GetVariablesRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetVariablesRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetVariablesRequest; + static deserializeBinaryFromReader(message: GetVariablesRequest, reader: jspb.BinaryReader): GetVariablesRequest; +} + +export namespace GetVariablesRequest { + export type AsObject = { + name: string, + options?: DatasourceOptions.AsObject, + variablesList: Array, + } +} + +export class GetVariablesResponse extends jspb.Message { + clearVariablesList(): void; + getVariablesList(): Array; + setVariablesList(value: Array): void; + addVariables(value?: application_pb.ApplicationMetricsVariable, index?: number): application_pb.ApplicationMetricsVariable; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetVariablesResponse.AsObject; + static toObject(includeInstance: boolean, msg: GetVariablesResponse): GetVariablesResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetVariablesResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetVariablesResponse; + static deserializeBinaryFromReader(message: GetVariablesResponse, reader: jspb.BinaryReader): GetVariablesResponse; +} + +export namespace GetVariablesResponse { + export type AsObject = { + variablesList: Array, + } +} + +export class GetMetricsRequest extends jspb.Message { + getName(): string; + setName(value: string): void; + + hasOptions(): boolean; + clearOptions(): void; + getOptions(): DatasourceOptions | undefined; + setOptions(value?: DatasourceOptions): void; + + clearVariablesList(): void; + getVariablesList(): Array; + setVariablesList(value: Array): void; + addVariables(value?: application_pb.ApplicationMetricsVariable, index?: number): application_pb.ApplicationMetricsVariable; + + clearQueriesList(): void; + getQueriesList(): Array; + setQueriesList(value: Array): void; + addQueries(value?: application_pb.ApplicationMetricsQuery, index?: number): application_pb.ApplicationMetricsQuery; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetMetricsRequest.AsObject; + static toObject(includeInstance: boolean, msg: GetMetricsRequest): GetMetricsRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetMetricsRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetMetricsRequest; + static deserializeBinaryFromReader(message: GetMetricsRequest, reader: jspb.BinaryReader): GetMetricsRequest; +} + +export namespace GetMetricsRequest { + export type AsObject = { + name: string, + options?: DatasourceOptions.AsObject, + variablesList: Array, + queriesList: Array, + } +} + +export class GetMetricsResponse extends jspb.Message { + clearMetricsList(): void; + getMetricsList(): Array; + setMetricsList(value: Array): void; + addMetrics(value?: DatasourceMetrics, index?: number): DatasourceMetrics; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetMetricsResponse.AsObject; + static toObject(includeInstance: boolean, msg: GetMetricsResponse): GetMetricsResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetMetricsResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetMetricsResponse; + static deserializeBinaryFromReader(message: GetMetricsResponse, reader: jspb.BinaryReader): GetMetricsResponse; +} + +export namespace GetMetricsResponse { + export type AsObject = { + metricsList: Array, + } +} + +export class GetLogsRequest extends jspb.Message { + getName(): string; + setName(value: string): void; + + hasOptions(): boolean; + clearOptions(): void; + getOptions(): DatasourceOptions | undefined; + setOptions(value?: DatasourceOptions): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetLogsRequest.AsObject; + static toObject(includeInstance: boolean, msg: GetLogsRequest): GetLogsRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetLogsRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetLogsRequest; + static deserializeBinaryFromReader(message: GetLogsRequest, reader: jspb.BinaryReader): GetLogsRequest; +} + +export namespace GetLogsRequest { + export type AsObject = { + name: string, + options?: DatasourceOptions.AsObject, + } +} + +export class GetLogsResponse extends jspb.Message { + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetLogsResponse.AsObject; + static toObject(includeInstance: boolean, msg: GetLogsResponse): GetLogsResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetLogsResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetLogsResponse; + static deserializeBinaryFromReader(message: GetLogsResponse, reader: jspb.BinaryReader): GetLogsResponse; +} + +export namespace GetLogsResponse { + export type AsObject = { + } +} + +export class GetTracesRequest extends jspb.Message { + getName(): string; + setName(value: string): void; + + hasOptions(): boolean; + clearOptions(): void; + getOptions(): DatasourceOptions | undefined; + setOptions(value?: DatasourceOptions): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetTracesRequest.AsObject; + static toObject(includeInstance: boolean, msg: GetTracesRequest): GetTracesRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetTracesRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetTracesRequest; + static deserializeBinaryFromReader(message: GetTracesRequest, reader: jspb.BinaryReader): GetTracesRequest; +} + +export namespace GetTracesRequest { + export type AsObject = { + name: string, + options?: DatasourceOptions.AsObject, + } +} + +export class GetTracesResponse extends jspb.Message { + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetTracesResponse.AsObject; + static toObject(includeInstance: boolean, msg: GetTracesResponse): GetTracesResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetTracesResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetTracesResponse; + static deserializeBinaryFromReader(message: GetTracesResponse, reader: jspb.BinaryReader): GetTracesResponse; +} + +export namespace GetTracesResponse { + export type AsObject = { + } +} + +export class DatasourceOptions extends jspb.Message { + getTimestart(): number; + setTimestart(value: number): void; + + getTimeend(): number; + setTimeend(value: number): void; + + getResolution(): string; + setResolution(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): DatasourceOptions.AsObject; + static toObject(includeInstance: boolean, msg: DatasourceOptions): DatasourceOptions.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: DatasourceOptions, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): DatasourceOptions; + static deserializeBinaryFromReader(message: DatasourceOptions, reader: jspb.BinaryReader): DatasourceOptions; +} + +export namespace DatasourceOptions { + export type AsObject = { + timestart: number, + timeend: number, + resolution: string, + } +} + +export class DatasourceMetrics extends jspb.Message { + getLabel(): string; + setLabel(value: string): void; + + getMin(): number; + setMin(value: number): void; + + getMax(): number; + setMax(value: number): void; + + clearDataList(): void; + getDataList(): Array; + setDataList(value: Array): void; + addData(value?: DatasourceMetricsData, index?: number): DatasourceMetricsData; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): DatasourceMetrics.AsObject; + static toObject(includeInstance: boolean, msg: DatasourceMetrics): DatasourceMetrics.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: DatasourceMetrics, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): DatasourceMetrics; + static deserializeBinaryFromReader(message: DatasourceMetrics, reader: jspb.BinaryReader): DatasourceMetrics; +} + +export namespace DatasourceMetrics { + export type AsObject = { + label: string, + min: number, + max: number, + dataList: Array, + } +} + +export class DatasourceMetricsData extends jspb.Message { + getX(): number; + setX(value: number): void; + + getY(): number; + setY(value: number): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): DatasourceMetricsData.AsObject; + static toObject(includeInstance: boolean, msg: DatasourceMetricsData): DatasourceMetricsData.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: DatasourceMetricsData, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): DatasourceMetricsData; + static deserializeBinaryFromReader(message: DatasourceMetricsData, reader: jspb.BinaryReader): DatasourceMetricsData; +} + +export namespace DatasourceMetricsData { + export type AsObject = { + x: number, + y: number, + } +} + diff --git a/app/src/generated/proto/datasources_pb.js b/app/src/generated/proto/datasources_pb.js new file mode 100644 index 000000000..e06311c4c --- /dev/null +++ b/app/src/generated/proto/datasources_pb.js @@ -0,0 +1,2614 @@ +// source: datasources.proto +/** + * @fileoverview + * @enhanceable + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = Function('return this')(); + +var application_pb = require('./application_pb.js'); +goog.object.extend(proto, application_pb); +goog.exportSymbol('proto.datasources.DatasourceMetrics', null, global); +goog.exportSymbol('proto.datasources.DatasourceMetricsData', null, global); +goog.exportSymbol('proto.datasources.DatasourceOptions', null, global); +goog.exportSymbol('proto.datasources.GetDatasourceRequest', null, global); +goog.exportSymbol('proto.datasources.GetDatasourceResponse', null, global); +goog.exportSymbol('proto.datasources.GetLogsRequest', null, global); +goog.exportSymbol('proto.datasources.GetLogsResponse', null, global); +goog.exportSymbol('proto.datasources.GetMetricsRequest', null, global); +goog.exportSymbol('proto.datasources.GetMetricsResponse', null, global); +goog.exportSymbol('proto.datasources.GetTracesRequest', null, global); +goog.exportSymbol('proto.datasources.GetTracesResponse', null, global); +goog.exportSymbol('proto.datasources.GetVariablesRequest', null, global); +goog.exportSymbol('proto.datasources.GetVariablesResponse', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetDatasourceRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.datasources.GetDatasourceRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetDatasourceRequest.displayName = 'proto.datasources.GetDatasourceRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetDatasourceResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.datasources.GetDatasourceResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetDatasourceResponse.displayName = 'proto.datasources.GetDatasourceResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetVariablesRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.datasources.GetVariablesRequest.repeatedFields_, null); +}; +goog.inherits(proto.datasources.GetVariablesRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetVariablesRequest.displayName = 'proto.datasources.GetVariablesRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetVariablesResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.datasources.GetVariablesResponse.repeatedFields_, null); +}; +goog.inherits(proto.datasources.GetVariablesResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetVariablesResponse.displayName = 'proto.datasources.GetVariablesResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetMetricsRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.datasources.GetMetricsRequest.repeatedFields_, null); +}; +goog.inherits(proto.datasources.GetMetricsRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetMetricsRequest.displayName = 'proto.datasources.GetMetricsRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetMetricsResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.datasources.GetMetricsResponse.repeatedFields_, null); +}; +goog.inherits(proto.datasources.GetMetricsResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetMetricsResponse.displayName = 'proto.datasources.GetMetricsResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetLogsRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.datasources.GetLogsRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetLogsRequest.displayName = 'proto.datasources.GetLogsRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetLogsResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.datasources.GetLogsResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetLogsResponse.displayName = 'proto.datasources.GetLogsResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetTracesRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.datasources.GetTracesRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetTracesRequest.displayName = 'proto.datasources.GetTracesRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.GetTracesResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.datasources.GetTracesResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.GetTracesResponse.displayName = 'proto.datasources.GetTracesResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.DatasourceOptions = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.datasources.DatasourceOptions, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.DatasourceOptions.displayName = 'proto.datasources.DatasourceOptions'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.DatasourceMetrics = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.datasources.DatasourceMetrics.repeatedFields_, null); +}; +goog.inherits(proto.datasources.DatasourceMetrics, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.DatasourceMetrics.displayName = 'proto.datasources.DatasourceMetrics'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.datasources.DatasourceMetricsData = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.datasources.DatasourceMetricsData, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.datasources.DatasourceMetricsData.displayName = 'proto.datasources.DatasourceMetricsData'; +} + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetDatasourceRequest.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetDatasourceRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetDatasourceRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetDatasourceRequest.toObject = function(includeInstance, msg) { + var f, obj = { + name: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetDatasourceRequest} + */ +proto.datasources.GetDatasourceRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetDatasourceRequest; + return proto.datasources.GetDatasourceRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetDatasourceRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetDatasourceRequest} + */ +proto.datasources.GetDatasourceRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetDatasourceRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetDatasourceRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetDatasourceRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetDatasourceRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.datasources.GetDatasourceRequest.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.datasources.GetDatasourceRequest} returns this + */ +proto.datasources.GetDatasourceRequest.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetDatasourceResponse.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetDatasourceResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetDatasourceResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetDatasourceResponse.toObject = function(includeInstance, msg) { + var f, obj = { + name: jspb.Message.getFieldWithDefault(msg, 1, ""), + type: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetDatasourceResponse} + */ +proto.datasources.GetDatasourceResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetDatasourceResponse; + return proto.datasources.GetDatasourceResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetDatasourceResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetDatasourceResponse} + */ +proto.datasources.GetDatasourceResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setType(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetDatasourceResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetDatasourceResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetDatasourceResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetDatasourceResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getType(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.datasources.GetDatasourceResponse.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.datasources.GetDatasourceResponse} returns this + */ +proto.datasources.GetDatasourceResponse.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string type = 2; + * @return {string} + */ +proto.datasources.GetDatasourceResponse.prototype.getType = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.datasources.GetDatasourceResponse} returns this + */ +proto.datasources.GetDatasourceResponse.prototype.setType = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.datasources.GetVariablesRequest.repeatedFields_ = [3]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetVariablesRequest.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetVariablesRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetVariablesRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetVariablesRequest.toObject = function(includeInstance, msg) { + var f, obj = { + name: jspb.Message.getFieldWithDefault(msg, 1, ""), + options: (f = msg.getOptions()) && proto.datasources.DatasourceOptions.toObject(includeInstance, f), + variablesList: jspb.Message.toObjectList(msg.getVariablesList(), + application_pb.ApplicationMetricsVariable.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetVariablesRequest} + */ +proto.datasources.GetVariablesRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetVariablesRequest; + return proto.datasources.GetVariablesRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetVariablesRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetVariablesRequest} + */ +proto.datasources.GetVariablesRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 2: + var value = new proto.datasources.DatasourceOptions; + reader.readMessage(value,proto.datasources.DatasourceOptions.deserializeBinaryFromReader); + msg.setOptions(value); + break; + case 3: + var value = new application_pb.ApplicationMetricsVariable; + reader.readMessage(value,application_pb.ApplicationMetricsVariable.deserializeBinaryFromReader); + msg.addVariables(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetVariablesRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetVariablesRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetVariablesRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetVariablesRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getOptions(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.datasources.DatasourceOptions.serializeBinaryToWriter + ); + } + f = message.getVariablesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 3, + f, + application_pb.ApplicationMetricsVariable.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.datasources.GetVariablesRequest.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.datasources.GetVariablesRequest} returns this + */ +proto.datasources.GetVariablesRequest.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional DatasourceOptions options = 2; + * @return {?proto.datasources.DatasourceOptions} + */ +proto.datasources.GetVariablesRequest.prototype.getOptions = function() { + return /** @type{?proto.datasources.DatasourceOptions} */ ( + jspb.Message.getWrapperField(this, proto.datasources.DatasourceOptions, 2)); +}; + + +/** + * @param {?proto.datasources.DatasourceOptions|undefined} value + * @return {!proto.datasources.GetVariablesRequest} returns this +*/ +proto.datasources.GetVariablesRequest.prototype.setOptions = function(value) { + return jspb.Message.setWrapperField(this, 2, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.datasources.GetVariablesRequest} returns this + */ +proto.datasources.GetVariablesRequest.prototype.clearOptions = function() { + return this.setOptions(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.datasources.GetVariablesRequest.prototype.hasOptions = function() { + return jspb.Message.getField(this, 2) != null; +}; + + +/** + * repeated application.ApplicationMetricsVariable variables = 3; + * @return {!Array} + */ +proto.datasources.GetVariablesRequest.prototype.getVariablesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, application_pb.ApplicationMetricsVariable, 3)); +}; + + +/** + * @param {!Array} value + * @return {!proto.datasources.GetVariablesRequest} returns this +*/ +proto.datasources.GetVariablesRequest.prototype.setVariablesList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 3, value); +}; + + +/** + * @param {!proto.application.ApplicationMetricsVariable=} opt_value + * @param {number=} opt_index + * @return {!proto.application.ApplicationMetricsVariable} + */ +proto.datasources.GetVariablesRequest.prototype.addVariables = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.application.ApplicationMetricsVariable, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.datasources.GetVariablesRequest} returns this + */ +proto.datasources.GetVariablesRequest.prototype.clearVariablesList = function() { + return this.setVariablesList([]); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.datasources.GetVariablesResponse.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetVariablesResponse.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetVariablesResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetVariablesResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetVariablesResponse.toObject = function(includeInstance, msg) { + var f, obj = { + variablesList: jspb.Message.toObjectList(msg.getVariablesList(), + application_pb.ApplicationMetricsVariable.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetVariablesResponse} + */ +proto.datasources.GetVariablesResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetVariablesResponse; + return proto.datasources.GetVariablesResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetVariablesResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetVariablesResponse} + */ +proto.datasources.GetVariablesResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new application_pb.ApplicationMetricsVariable; + reader.readMessage(value,application_pb.ApplicationMetricsVariable.deserializeBinaryFromReader); + msg.addVariables(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetVariablesResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetVariablesResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetVariablesResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetVariablesResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getVariablesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 1, + f, + application_pb.ApplicationMetricsVariable.serializeBinaryToWriter + ); + } +}; + + +/** + * repeated application.ApplicationMetricsVariable variables = 1; + * @return {!Array} + */ +proto.datasources.GetVariablesResponse.prototype.getVariablesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, application_pb.ApplicationMetricsVariable, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.datasources.GetVariablesResponse} returns this +*/ +proto.datasources.GetVariablesResponse.prototype.setVariablesList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); +}; + + +/** + * @param {!proto.application.ApplicationMetricsVariable=} opt_value + * @param {number=} opt_index + * @return {!proto.application.ApplicationMetricsVariable} + */ +proto.datasources.GetVariablesResponse.prototype.addVariables = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.application.ApplicationMetricsVariable, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.datasources.GetVariablesResponse} returns this + */ +proto.datasources.GetVariablesResponse.prototype.clearVariablesList = function() { + return this.setVariablesList([]); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.datasources.GetMetricsRequest.repeatedFields_ = [3,4]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetMetricsRequest.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetMetricsRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetMetricsRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetMetricsRequest.toObject = function(includeInstance, msg) { + var f, obj = { + name: jspb.Message.getFieldWithDefault(msg, 1, ""), + options: (f = msg.getOptions()) && proto.datasources.DatasourceOptions.toObject(includeInstance, f), + variablesList: jspb.Message.toObjectList(msg.getVariablesList(), + application_pb.ApplicationMetricsVariable.toObject, includeInstance), + queriesList: jspb.Message.toObjectList(msg.getQueriesList(), + application_pb.ApplicationMetricsQuery.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetMetricsRequest} + */ +proto.datasources.GetMetricsRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetMetricsRequest; + return proto.datasources.GetMetricsRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetMetricsRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetMetricsRequest} + */ +proto.datasources.GetMetricsRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 2: + var value = new proto.datasources.DatasourceOptions; + reader.readMessage(value,proto.datasources.DatasourceOptions.deserializeBinaryFromReader); + msg.setOptions(value); + break; + case 3: + var value = new application_pb.ApplicationMetricsVariable; + reader.readMessage(value,application_pb.ApplicationMetricsVariable.deserializeBinaryFromReader); + msg.addVariables(value); + break; + case 4: + var value = new application_pb.ApplicationMetricsQuery; + reader.readMessage(value,application_pb.ApplicationMetricsQuery.deserializeBinaryFromReader); + msg.addQueries(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetMetricsRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetMetricsRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetMetricsRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetMetricsRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getOptions(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.datasources.DatasourceOptions.serializeBinaryToWriter + ); + } + f = message.getVariablesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 3, + f, + application_pb.ApplicationMetricsVariable.serializeBinaryToWriter + ); + } + f = message.getQueriesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 4, + f, + application_pb.ApplicationMetricsQuery.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.datasources.GetMetricsRequest.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.datasources.GetMetricsRequest} returns this + */ +proto.datasources.GetMetricsRequest.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional DatasourceOptions options = 2; + * @return {?proto.datasources.DatasourceOptions} + */ +proto.datasources.GetMetricsRequest.prototype.getOptions = function() { + return /** @type{?proto.datasources.DatasourceOptions} */ ( + jspb.Message.getWrapperField(this, proto.datasources.DatasourceOptions, 2)); +}; + + +/** + * @param {?proto.datasources.DatasourceOptions|undefined} value + * @return {!proto.datasources.GetMetricsRequest} returns this +*/ +proto.datasources.GetMetricsRequest.prototype.setOptions = function(value) { + return jspb.Message.setWrapperField(this, 2, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.datasources.GetMetricsRequest} returns this + */ +proto.datasources.GetMetricsRequest.prototype.clearOptions = function() { + return this.setOptions(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.datasources.GetMetricsRequest.prototype.hasOptions = function() { + return jspb.Message.getField(this, 2) != null; +}; + + +/** + * repeated application.ApplicationMetricsVariable variables = 3; + * @return {!Array} + */ +proto.datasources.GetMetricsRequest.prototype.getVariablesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, application_pb.ApplicationMetricsVariable, 3)); +}; + + +/** + * @param {!Array} value + * @return {!proto.datasources.GetMetricsRequest} returns this +*/ +proto.datasources.GetMetricsRequest.prototype.setVariablesList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 3, value); +}; + + +/** + * @param {!proto.application.ApplicationMetricsVariable=} opt_value + * @param {number=} opt_index + * @return {!proto.application.ApplicationMetricsVariable} + */ +proto.datasources.GetMetricsRequest.prototype.addVariables = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.application.ApplicationMetricsVariable, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.datasources.GetMetricsRequest} returns this + */ +proto.datasources.GetMetricsRequest.prototype.clearVariablesList = function() { + return this.setVariablesList([]); +}; + + +/** + * repeated application.ApplicationMetricsQuery queries = 4; + * @return {!Array} + */ +proto.datasources.GetMetricsRequest.prototype.getQueriesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, application_pb.ApplicationMetricsQuery, 4)); +}; + + +/** + * @param {!Array} value + * @return {!proto.datasources.GetMetricsRequest} returns this +*/ +proto.datasources.GetMetricsRequest.prototype.setQueriesList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 4, value); +}; + + +/** + * @param {!proto.application.ApplicationMetricsQuery=} opt_value + * @param {number=} opt_index + * @return {!proto.application.ApplicationMetricsQuery} + */ +proto.datasources.GetMetricsRequest.prototype.addQueries = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.application.ApplicationMetricsQuery, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.datasources.GetMetricsRequest} returns this + */ +proto.datasources.GetMetricsRequest.prototype.clearQueriesList = function() { + return this.setQueriesList([]); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.datasources.GetMetricsResponse.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetMetricsResponse.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetMetricsResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetMetricsResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetMetricsResponse.toObject = function(includeInstance, msg) { + var f, obj = { + metricsList: jspb.Message.toObjectList(msg.getMetricsList(), + proto.datasources.DatasourceMetrics.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetMetricsResponse} + */ +proto.datasources.GetMetricsResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetMetricsResponse; + return proto.datasources.GetMetricsResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetMetricsResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetMetricsResponse} + */ +proto.datasources.GetMetricsResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.datasources.DatasourceMetrics; + reader.readMessage(value,proto.datasources.DatasourceMetrics.deserializeBinaryFromReader); + msg.addMetrics(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetMetricsResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetMetricsResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetMetricsResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetMetricsResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getMetricsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 1, + f, + proto.datasources.DatasourceMetrics.serializeBinaryToWriter + ); + } +}; + + +/** + * repeated DatasourceMetrics metrics = 1; + * @return {!Array} + */ +proto.datasources.GetMetricsResponse.prototype.getMetricsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.datasources.DatasourceMetrics, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.datasources.GetMetricsResponse} returns this +*/ +proto.datasources.GetMetricsResponse.prototype.setMetricsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); +}; + + +/** + * @param {!proto.datasources.DatasourceMetrics=} opt_value + * @param {number=} opt_index + * @return {!proto.datasources.DatasourceMetrics} + */ +proto.datasources.GetMetricsResponse.prototype.addMetrics = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.datasources.DatasourceMetrics, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.datasources.GetMetricsResponse} returns this + */ +proto.datasources.GetMetricsResponse.prototype.clearMetricsList = function() { + return this.setMetricsList([]); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetLogsRequest.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetLogsRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetLogsRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetLogsRequest.toObject = function(includeInstance, msg) { + var f, obj = { + name: jspb.Message.getFieldWithDefault(msg, 1, ""), + options: (f = msg.getOptions()) && proto.datasources.DatasourceOptions.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetLogsRequest} + */ +proto.datasources.GetLogsRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetLogsRequest; + return proto.datasources.GetLogsRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetLogsRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetLogsRequest} + */ +proto.datasources.GetLogsRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 2: + var value = new proto.datasources.DatasourceOptions; + reader.readMessage(value,proto.datasources.DatasourceOptions.deserializeBinaryFromReader); + msg.setOptions(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetLogsRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetLogsRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetLogsRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetLogsRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getOptions(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.datasources.DatasourceOptions.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.datasources.GetLogsRequest.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.datasources.GetLogsRequest} returns this + */ +proto.datasources.GetLogsRequest.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional DatasourceOptions options = 2; + * @return {?proto.datasources.DatasourceOptions} + */ +proto.datasources.GetLogsRequest.prototype.getOptions = function() { + return /** @type{?proto.datasources.DatasourceOptions} */ ( + jspb.Message.getWrapperField(this, proto.datasources.DatasourceOptions, 2)); +}; + + +/** + * @param {?proto.datasources.DatasourceOptions|undefined} value + * @return {!proto.datasources.GetLogsRequest} returns this +*/ +proto.datasources.GetLogsRequest.prototype.setOptions = function(value) { + return jspb.Message.setWrapperField(this, 2, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.datasources.GetLogsRequest} returns this + */ +proto.datasources.GetLogsRequest.prototype.clearOptions = function() { + return this.setOptions(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.datasources.GetLogsRequest.prototype.hasOptions = function() { + return jspb.Message.getField(this, 2) != null; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetLogsResponse.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetLogsResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetLogsResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetLogsResponse.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetLogsResponse} + */ +proto.datasources.GetLogsResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetLogsResponse; + return proto.datasources.GetLogsResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetLogsResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetLogsResponse} + */ +proto.datasources.GetLogsResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetLogsResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetLogsResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetLogsResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetLogsResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetTracesRequest.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetTracesRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetTracesRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetTracesRequest.toObject = function(includeInstance, msg) { + var f, obj = { + name: jspb.Message.getFieldWithDefault(msg, 1, ""), + options: (f = msg.getOptions()) && proto.datasources.DatasourceOptions.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetTracesRequest} + */ +proto.datasources.GetTracesRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetTracesRequest; + return proto.datasources.GetTracesRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetTracesRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetTracesRequest} + */ +proto.datasources.GetTracesRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 2: + var value = new proto.datasources.DatasourceOptions; + reader.readMessage(value,proto.datasources.DatasourceOptions.deserializeBinaryFromReader); + msg.setOptions(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetTracesRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetTracesRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetTracesRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetTracesRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getOptions(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.datasources.DatasourceOptions.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.datasources.GetTracesRequest.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.datasources.GetTracesRequest} returns this + */ +proto.datasources.GetTracesRequest.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional DatasourceOptions options = 2; + * @return {?proto.datasources.DatasourceOptions} + */ +proto.datasources.GetTracesRequest.prototype.getOptions = function() { + return /** @type{?proto.datasources.DatasourceOptions} */ ( + jspb.Message.getWrapperField(this, proto.datasources.DatasourceOptions, 2)); +}; + + +/** + * @param {?proto.datasources.DatasourceOptions|undefined} value + * @return {!proto.datasources.GetTracesRequest} returns this +*/ +proto.datasources.GetTracesRequest.prototype.setOptions = function(value) { + return jspb.Message.setWrapperField(this, 2, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.datasources.GetTracesRequest} returns this + */ +proto.datasources.GetTracesRequest.prototype.clearOptions = function() { + return this.setOptions(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.datasources.GetTracesRequest.prototype.hasOptions = function() { + return jspb.Message.getField(this, 2) != null; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.GetTracesResponse.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.GetTracesResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.GetTracesResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetTracesResponse.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.GetTracesResponse} + */ +proto.datasources.GetTracesResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.GetTracesResponse; + return proto.datasources.GetTracesResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.GetTracesResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.GetTracesResponse} + */ +proto.datasources.GetTracesResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.GetTracesResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.GetTracesResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.GetTracesResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.GetTracesResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.DatasourceOptions.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.DatasourceOptions.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.DatasourceOptions} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.DatasourceOptions.toObject = function(includeInstance, msg) { + var f, obj = { + timestart: jspb.Message.getFieldWithDefault(msg, 1, 0), + timeend: jspb.Message.getFieldWithDefault(msg, 2, 0), + resolution: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.DatasourceOptions} + */ +proto.datasources.DatasourceOptions.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.DatasourceOptions; + return proto.datasources.DatasourceOptions.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.DatasourceOptions} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.DatasourceOptions} + */ +proto.datasources.DatasourceOptions.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {number} */ (reader.readInt64()); + msg.setTimestart(value); + break; + case 2: + var value = /** @type {number} */ (reader.readInt64()); + msg.setTimeend(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setResolution(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.DatasourceOptions.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.DatasourceOptions.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.DatasourceOptions} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.DatasourceOptions.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getTimestart(); + if (f !== 0) { + writer.writeInt64( + 1, + f + ); + } + f = message.getTimeend(); + if (f !== 0) { + writer.writeInt64( + 2, + f + ); + } + f = message.getResolution(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional int64 timeStart = 1; + * @return {number} + */ +proto.datasources.DatasourceOptions.prototype.getTimestart = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.datasources.DatasourceOptions} returns this + */ +proto.datasources.DatasourceOptions.prototype.setTimestart = function(value) { + return jspb.Message.setProto3IntField(this, 1, value); +}; + + +/** + * optional int64 timeEnd = 2; + * @return {number} + */ +proto.datasources.DatasourceOptions.prototype.getTimeend = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.datasources.DatasourceOptions} returns this + */ +proto.datasources.DatasourceOptions.prototype.setTimeend = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + +/** + * optional string resolution = 3; + * @return {string} + */ +proto.datasources.DatasourceOptions.prototype.getResolution = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.datasources.DatasourceOptions} returns this + */ +proto.datasources.DatasourceOptions.prototype.setResolution = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.datasources.DatasourceMetrics.repeatedFields_ = [4]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.DatasourceMetrics.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.DatasourceMetrics.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.DatasourceMetrics} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.DatasourceMetrics.toObject = function(includeInstance, msg) { + var f, obj = { + label: jspb.Message.getFieldWithDefault(msg, 1, ""), + min: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0), + max: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0), + dataList: jspb.Message.toObjectList(msg.getDataList(), + proto.datasources.DatasourceMetricsData.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.DatasourceMetrics} + */ +proto.datasources.DatasourceMetrics.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.DatasourceMetrics; + return proto.datasources.DatasourceMetrics.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.DatasourceMetrics} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.DatasourceMetrics} + */ +proto.datasources.DatasourceMetrics.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setLabel(value); + break; + case 2: + var value = /** @type {number} */ (reader.readDouble()); + msg.setMin(value); + break; + case 3: + var value = /** @type {number} */ (reader.readDouble()); + msg.setMax(value); + break; + case 4: + var value = new proto.datasources.DatasourceMetricsData; + reader.readMessage(value,proto.datasources.DatasourceMetricsData.deserializeBinaryFromReader); + msg.addData(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.DatasourceMetrics.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.DatasourceMetrics.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.DatasourceMetrics} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.DatasourceMetrics.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getLabel(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getMin(); + if (f !== 0.0) { + writer.writeDouble( + 2, + f + ); + } + f = message.getMax(); + if (f !== 0.0) { + writer.writeDouble( + 3, + f + ); + } + f = message.getDataList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 4, + f, + proto.datasources.DatasourceMetricsData.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string label = 1; + * @return {string} + */ +proto.datasources.DatasourceMetrics.prototype.getLabel = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.datasources.DatasourceMetrics} returns this + */ +proto.datasources.DatasourceMetrics.prototype.setLabel = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional double min = 2; + * @return {number} + */ +proto.datasources.DatasourceMetrics.prototype.getMin = function() { + return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0)); +}; + + +/** + * @param {number} value + * @return {!proto.datasources.DatasourceMetrics} returns this + */ +proto.datasources.DatasourceMetrics.prototype.setMin = function(value) { + return jspb.Message.setProto3FloatField(this, 2, value); +}; + + +/** + * optional double max = 3; + * @return {number} + */ +proto.datasources.DatasourceMetrics.prototype.getMax = function() { + return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0)); +}; + + +/** + * @param {number} value + * @return {!proto.datasources.DatasourceMetrics} returns this + */ +proto.datasources.DatasourceMetrics.prototype.setMax = function(value) { + return jspb.Message.setProto3FloatField(this, 3, value); +}; + + +/** + * repeated DatasourceMetricsData data = 4; + * @return {!Array} + */ +proto.datasources.DatasourceMetrics.prototype.getDataList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.datasources.DatasourceMetricsData, 4)); +}; + + +/** + * @param {!Array} value + * @return {!proto.datasources.DatasourceMetrics} returns this +*/ +proto.datasources.DatasourceMetrics.prototype.setDataList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 4, value); +}; + + +/** + * @param {!proto.datasources.DatasourceMetricsData=} opt_value + * @param {number=} opt_index + * @return {!proto.datasources.DatasourceMetricsData} + */ +proto.datasources.DatasourceMetrics.prototype.addData = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.datasources.DatasourceMetricsData, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.datasources.DatasourceMetrics} returns this + */ +proto.datasources.DatasourceMetrics.prototype.clearDataList = function() { + return this.setDataList([]); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.datasources.DatasourceMetricsData.prototype.toObject = function(opt_includeInstance) { + return proto.datasources.DatasourceMetricsData.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.datasources.DatasourceMetricsData} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.DatasourceMetricsData.toObject = function(includeInstance, msg) { + var f, obj = { + x: jspb.Message.getFieldWithDefault(msg, 1, 0), + y: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.datasources.DatasourceMetricsData} + */ +proto.datasources.DatasourceMetricsData.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.datasources.DatasourceMetricsData; + return proto.datasources.DatasourceMetricsData.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.datasources.DatasourceMetricsData} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.datasources.DatasourceMetricsData} + */ +proto.datasources.DatasourceMetricsData.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {number} */ (reader.readInt64()); + msg.setX(value); + break; + case 2: + var value = /** @type {number} */ (reader.readDouble()); + msg.setY(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.datasources.DatasourceMetricsData.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.datasources.DatasourceMetricsData.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.datasources.DatasourceMetricsData} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.datasources.DatasourceMetricsData.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getX(); + if (f !== 0) { + writer.writeInt64( + 1, + f + ); + } + f = message.getY(); + if (f !== 0.0) { + writer.writeDouble( + 2, + f + ); + } +}; + + +/** + * optional int64 x = 1; + * @return {number} + */ +proto.datasources.DatasourceMetricsData.prototype.getX = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.datasources.DatasourceMetricsData} returns this + */ +proto.datasources.DatasourceMetricsData.prototype.setX = function(value) { + return jspb.Message.setProto3IntField(this, 1, value); +}; + + +/** + * optional double y = 2; + * @return {number} + */ +proto.datasources.DatasourceMetricsData.prototype.getY = function() { + return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0)); +}; + + +/** + * @param {number} value + * @return {!proto.datasources.DatasourceMetricsData} returns this + */ +proto.datasources.DatasourceMetricsData.prototype.setY = function(value) { + return jspb.Message.setProto3FloatField(this, 2, value); +}; + + +goog.object.extend(exports, proto.datasources); diff --git a/app/src/generated/proto/datasources_pb_service.d.ts b/app/src/generated/proto/datasources_pb_service.d.ts new file mode 100644 index 000000000..c3d5271aa --- /dev/null +++ b/app/src/generated/proto/datasources_pb_service.d.ts @@ -0,0 +1,139 @@ +// package: datasources +// file: datasources.proto + +import * as datasources_pb from "./datasources_pb"; +import {grpc} from "@improbable-eng/grpc-web"; + +type DatasourcesGetDatasource = { + readonly methodName: string; + readonly service: typeof Datasources; + readonly requestStream: false; + readonly responseStream: false; + readonly requestType: typeof datasources_pb.GetDatasourceRequest; + readonly responseType: typeof datasources_pb.GetDatasourceResponse; +}; + +type DatasourcesGetVariables = { + readonly methodName: string; + readonly service: typeof Datasources; + readonly requestStream: false; + readonly responseStream: false; + readonly requestType: typeof datasources_pb.GetVariablesRequest; + readonly responseType: typeof datasources_pb.GetVariablesResponse; +}; + +type DatasourcesGetMetrics = { + readonly methodName: string; + readonly service: typeof Datasources; + readonly requestStream: false; + readonly responseStream: false; + readonly requestType: typeof datasources_pb.GetMetricsRequest; + readonly responseType: typeof datasources_pb.GetMetricsResponse; +}; + +type DatasourcesGetLogs = { + readonly methodName: string; + readonly service: typeof Datasources; + readonly requestStream: false; + readonly responseStream: false; + readonly requestType: typeof datasources_pb.GetLogsRequest; + readonly responseType: typeof datasources_pb.GetLogsResponse; +}; + +type DatasourcesGetTraces = { + readonly methodName: string; + readonly service: typeof Datasources; + readonly requestStream: false; + readonly responseStream: false; + readonly requestType: typeof datasources_pb.GetTracesRequest; + readonly responseType: typeof datasources_pb.GetTracesResponse; +}; + +export class Datasources { + static readonly serviceName: string; + static readonly GetDatasource: DatasourcesGetDatasource; + static readonly GetVariables: DatasourcesGetVariables; + static readonly GetMetrics: DatasourcesGetMetrics; + static readonly GetLogs: DatasourcesGetLogs; + static readonly GetTraces: DatasourcesGetTraces; +} + +export type ServiceError = { message: string, code: number; metadata: grpc.Metadata } +export type Status = { details: string, code: number; metadata: grpc.Metadata } + +interface UnaryResponse { + cancel(): void; +} +interface ResponseStream { + cancel(): void; + on(type: 'data', handler: (message: T) => void): ResponseStream; + on(type: 'end', handler: (status?: Status) => void): ResponseStream; + on(type: 'status', handler: (status: Status) => void): ResponseStream; +} +interface RequestStream { + write(message: T): RequestStream; + end(): void; + cancel(): void; + on(type: 'end', handler: (status?: Status) => void): RequestStream; + on(type: 'status', handler: (status: Status) => void): RequestStream; +} +interface BidirectionalStream { + write(message: ReqT): BidirectionalStream; + end(): void; + cancel(): void; + on(type: 'data', handler: (message: ResT) => void): BidirectionalStream; + on(type: 'end', handler: (status?: Status) => void): BidirectionalStream; + on(type: 'status', handler: (status: Status) => void): BidirectionalStream; +} + +export class DatasourcesClient { + readonly serviceHost: string; + + constructor(serviceHost: string, options?: grpc.RpcOptions); + getDatasource( + requestMessage: datasources_pb.GetDatasourceRequest, + metadata: grpc.Metadata, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetDatasourceResponse|null) => void + ): UnaryResponse; + getDatasource( + requestMessage: datasources_pb.GetDatasourceRequest, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetDatasourceResponse|null) => void + ): UnaryResponse; + getVariables( + requestMessage: datasources_pb.GetVariablesRequest, + metadata: grpc.Metadata, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetVariablesResponse|null) => void + ): UnaryResponse; + getVariables( + requestMessage: datasources_pb.GetVariablesRequest, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetVariablesResponse|null) => void + ): UnaryResponse; + getMetrics( + requestMessage: datasources_pb.GetMetricsRequest, + metadata: grpc.Metadata, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetMetricsResponse|null) => void + ): UnaryResponse; + getMetrics( + requestMessage: datasources_pb.GetMetricsRequest, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetMetricsResponse|null) => void + ): UnaryResponse; + getLogs( + requestMessage: datasources_pb.GetLogsRequest, + metadata: grpc.Metadata, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetLogsResponse|null) => void + ): UnaryResponse; + getLogs( + requestMessage: datasources_pb.GetLogsRequest, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetLogsResponse|null) => void + ): UnaryResponse; + getTraces( + requestMessage: datasources_pb.GetTracesRequest, + metadata: grpc.Metadata, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetTracesResponse|null) => void + ): UnaryResponse; + getTraces( + requestMessage: datasources_pb.GetTracesRequest, + callback: (error: ServiceError|null, responseMessage: datasources_pb.GetTracesResponse|null) => void + ): UnaryResponse; +} + diff --git a/app/src/generated/proto/datasources_pb_service.js b/app/src/generated/proto/datasources_pb_service.js new file mode 100644 index 000000000..919f3c3a4 --- /dev/null +++ b/app/src/generated/proto/datasources_pb_service.js @@ -0,0 +1,221 @@ +// package: datasources +// file: datasources.proto + +var datasources_pb = require("./datasources_pb"); +var grpc = require("@improbable-eng/grpc-web").grpc; + +var Datasources = (function () { + function Datasources() {} + Datasources.serviceName = "datasources.Datasources"; + return Datasources; +}()); + +Datasources.GetDatasource = { + methodName: "GetDatasource", + service: Datasources, + requestStream: false, + responseStream: false, + requestType: datasources_pb.GetDatasourceRequest, + responseType: datasources_pb.GetDatasourceResponse +}; + +Datasources.GetVariables = { + methodName: "GetVariables", + service: Datasources, + requestStream: false, + responseStream: false, + requestType: datasources_pb.GetVariablesRequest, + responseType: datasources_pb.GetVariablesResponse +}; + +Datasources.GetMetrics = { + methodName: "GetMetrics", + service: Datasources, + requestStream: false, + responseStream: false, + requestType: datasources_pb.GetMetricsRequest, + responseType: datasources_pb.GetMetricsResponse +}; + +Datasources.GetLogs = { + methodName: "GetLogs", + service: Datasources, + requestStream: false, + responseStream: false, + requestType: datasources_pb.GetLogsRequest, + responseType: datasources_pb.GetLogsResponse +}; + +Datasources.GetTraces = { + methodName: "GetTraces", + service: Datasources, + requestStream: false, + responseStream: false, + requestType: datasources_pb.GetTracesRequest, + responseType: datasources_pb.GetTracesResponse +}; + +exports.Datasources = Datasources; + +function DatasourcesClient(serviceHost, options) { + this.serviceHost = serviceHost; + this.options = options || {}; +} + +DatasourcesClient.prototype.getDatasource = function getDatasource(requestMessage, metadata, callback) { + if (arguments.length === 2) { + callback = arguments[1]; + } + var client = grpc.unary(Datasources.GetDatasource, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onEnd: function (response) { + if (callback) { + if (response.status !== grpc.Code.OK) { + var err = new Error(response.statusMessage); + err.code = response.status; + err.metadata = response.trailers; + callback(err, null); + } else { + callback(null, response.message); + } + } + } + }); + return { + cancel: function () { + callback = null; + client.close(); + } + }; +}; + +DatasourcesClient.prototype.getVariables = function getVariables(requestMessage, metadata, callback) { + if (arguments.length === 2) { + callback = arguments[1]; + } + var client = grpc.unary(Datasources.GetVariables, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onEnd: function (response) { + if (callback) { + if (response.status !== grpc.Code.OK) { + var err = new Error(response.statusMessage); + err.code = response.status; + err.metadata = response.trailers; + callback(err, null); + } else { + callback(null, response.message); + } + } + } + }); + return { + cancel: function () { + callback = null; + client.close(); + } + }; +}; + +DatasourcesClient.prototype.getMetrics = function getMetrics(requestMessage, metadata, callback) { + if (arguments.length === 2) { + callback = arguments[1]; + } + var client = grpc.unary(Datasources.GetMetrics, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onEnd: function (response) { + if (callback) { + if (response.status !== grpc.Code.OK) { + var err = new Error(response.statusMessage); + err.code = response.status; + err.metadata = response.trailers; + callback(err, null); + } else { + callback(null, response.message); + } + } + } + }); + return { + cancel: function () { + callback = null; + client.close(); + } + }; +}; + +DatasourcesClient.prototype.getLogs = function getLogs(requestMessage, metadata, callback) { + if (arguments.length === 2) { + callback = arguments[1]; + } + var client = grpc.unary(Datasources.GetLogs, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onEnd: function (response) { + if (callback) { + if (response.status !== grpc.Code.OK) { + var err = new Error(response.statusMessage); + err.code = response.status; + err.metadata = response.trailers; + callback(err, null); + } else { + callback(null, response.message); + } + } + } + }); + return { + cancel: function () { + callback = null; + client.close(); + } + }; +}; + +DatasourcesClient.prototype.getTraces = function getTraces(requestMessage, metadata, callback) { + if (arguments.length === 2) { + callback = arguments[1]; + } + var client = grpc.unary(Datasources.GetTraces, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onEnd: function (response) { + if (callback) { + if (response.status !== grpc.Code.OK) { + var err = new Error(response.statusMessage); + err.code = response.status; + err.metadata = response.trailers; + callback(err, null); + } else { + callback(null, response.message); + } + } + } + }); + return { + cancel: function () { + callback = null; + client.close(); + } + }; +}; + +exports.DatasourcesClient = DatasourcesClient; + diff --git a/app/src/utils/helpers.ts b/app/src/utils/helpers.ts index 02bf9ede4..f6d1461cc 100644 --- a/app/src/utils/helpers.ts +++ b/app/src/utils/helpers.ts @@ -20,3 +20,11 @@ export const timeDifference = (current: number, previous: number): string => { return Math.round(elapsed / msPerYear) + 'y'; } }; + +// formatTime formats an given timestamp in a uniform way accross the kobs UI. +export const formatTime = (timestamp: number): string => { + const d = new Date(timestamp * 1000); + return `${d.getFullYear()}-${('0' + (d.getMonth() + 1)).slice(-2)}-${('0' + d.getDate()).slice(-2)} ${( + '0' + d.getHours() + ).slice(-2)}:${('0' + d.getMinutes()).slice(-2)}:${('0' + d.getSeconds()).slice(-2)}`; +}; diff --git a/app/src/utils/proto.ts b/app/src/utils/proto.ts new file mode 100644 index 000000000..271667c56 --- /dev/null +++ b/app/src/utils/proto.ts @@ -0,0 +1,82 @@ +import { ApplicationMetricsVariable } from 'generated/proto/application_pb'; +import { DatasourceOptions } from 'generated/proto/datasources_pb'; + +// IDatasourceOptions must implement the DatasourceOptions message format from the datasources.proto file. It is used, +// to enable the usage of DatasourceOptions message formate within a React State. +export interface IDatasourceOptions { + resolution: string; + timeEnd: number; + timeStart: number; +} + +// convertDatasourceOptionsToProto converts a variable which implements the IDatasourceOptions interface to the +// DatasourceOptions message, so that we can use the options within a gRPC call. +export const convertDatasourceOptionsToProto = (options: IDatasourceOptions): DatasourceOptions => { + const datasourceOptions = new DatasourceOptions(); + datasourceOptions.setTimestart(options.timeStart); + datasourceOptions.setTimeend(options.timeEnd); + datasourceOptions.setResolution(options.resolution); + + return datasourceOptions; +}; + +// IApplicationMetricsVariable must implement the ApplicationMetricsVariable message format from the application.proto +// file. It is used, to allow the usage of the ApplicationMetricsVariable format via useState. +export interface IApplicationMetricsVariable { + allowAll: boolean; + label: string; + name: string; + query: string; + value: string; + values: string[]; +} + +// convertApplicationMetricsVariablesToProto converts an array of type IApplicationMetricsVariable to the corresponding +// protobuf message formate ApplicationMetricsVariable. +export const convertApplicationMetricsVariablesToProto = ( + variables: IApplicationMetricsVariable[], +): ApplicationMetricsVariable[] => { + const applicationMetricsVariables: ApplicationMetricsVariable[] = []; + + for (let i = 0; i < variables.length; i++) { + const applicationMetricsVariable = new ApplicationMetricsVariable(); + applicationMetricsVariable.setName(variables[i].name); + applicationMetricsVariable.setLabel(variables[i].label); + applicationMetricsVariable.setQuery(variables[i].query); + applicationMetricsVariable.setAllowall(variables[i].allowAll); + applicationMetricsVariable.setValuesList(variables[i].values); + applicationMetricsVariable.setValue(variables[i].value); + + applicationMetricsVariables.push(applicationMetricsVariable); + } + + return applicationMetricsVariables; +}; + +// convertApplicationMetricsVariablesFromProto converts the protobuf message formate ApplicationMetricsVariable to an +// array of type IApplicationMetricsVariable. +export const convertApplicationMetricsVariablesFromProto = ( + variables: ApplicationMetricsVariable[], +): IApplicationMetricsVariable[] => { + const applicationMetricsVariables: IApplicationMetricsVariable[] = []; + + for (let i = 0; i < variables.length; i++) { + applicationMetricsVariables.push({ + allowAll: variables[i].getAllowall(), + label: variables[i].getLabel(), + name: variables[i].getName(), + query: variables[i].getQuery(), + value: variables[i].getValue(), + values: variables[i].getValuesList(), + }); + } + + return applicationMetricsVariables; +}; + +// IDatasourceMetricsData must implement the DatasourceMetricsData message format from the datasources.proto file. It is +// used within the charts to access the x and y points of an time series. +export interface IDatasourceMetricsData { + x: number; + y: number; +} diff --git a/app/yarn.lock b/app/yarn.lock index 5d9ba0e30..39d1de592 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -1456,6 +1456,38 @@ resolved "https://registry.yarnpkg.com/@patternfly/patternfly/-/patternfly-4.80.3.tgz#fa979eb34f14bbc705f8354b15c3c81df1d36340" integrity sha512-YLUk4L6iCBXql92YP6zHg0FdlnEkd5/3V+uz/A3UoBuuDdEoyDpx4M/Tf56R7IXmYiRaHE1mToJHPDYypIlnmw== +"@patternfly/patternfly@4.87.3": + version "4.87.3" + resolved "https://registry.yarnpkg.com/@patternfly/patternfly/-/patternfly-4.87.3.tgz#eb2e9b22aa8f6f106580e7451bf204a06cb9949e" + integrity sha512-hDNMPa7B1zKD8LWFZO4SS5hC/N+yvuci2sAn8HJd+EIbAvbMAUkRsyZ0/XO3BG3RVtpSlgq7q8x1pAHC/FTFuA== + +"@patternfly/react-charts@^6.14.2": + version "6.14.2" + resolved "https://registry.yarnpkg.com/@patternfly/react-charts/-/react-charts-6.14.2.tgz#20d5b98af4504c2e2e38e4836088dfa54fb324cf" + integrity sha512-QfO+wJRCj6Wof/18KWpY0XmZKXhv4y2QsmLtjMoGtZbbjHtEUwXA+lYc4agj9k+CEpm+3xXR2GOoNSwaSZN3RA== + dependencies: + "@patternfly/patternfly" "4.87.3" + "@patternfly/react-styles" "^4.8.2" + "@patternfly/react-tokens" "^4.10.2" + hoist-non-react-statics "^3.3.0" + lodash "^4.17.19" + tslib "1.13.0" + victory-area "^35.4.4" + victory-axis "^35.4.4" + victory-bar "^35.4.4" + victory-chart "^35.4.4" + victory-core "^35.4.4" + victory-create-container "^35.4.4" + victory-group "^35.4.4" + victory-legend "^35.4.4" + victory-line "^35.4.4" + victory-pie "^35.4.4" + victory-scatter "^35.4.4" + victory-stack "^35.4.4" + victory-tooltip "^35.4.4" + victory-voronoi-container "^35.4.4" + victory-zoom-container "^35.4.4" + "@patternfly/react-core@^4.90.2": version "4.90.2" resolved "https://registry.yarnpkg.com/@patternfly/react-core/-/react-core-4.90.2.tgz#d03346d8f3a8d785e076b93df296ce4fa79d9dbe" @@ -1479,6 +1511,11 @@ resolved "https://registry.yarnpkg.com/@patternfly/react-styles/-/react-styles-4.7.29.tgz#a11cc8a9d4c4a0ac9c6bc298a47477473eaa430c" integrity sha512-eAO9xh2+IQHIBCihmwNuDVCeAWhGXIhbUNJEwZzvevYuH4Pnl0X8YaWoYmM2ZfL8ZdagRTLvjGW+hoZGkUyCBQ== +"@patternfly/react-styles@^4.8.2": + version "4.8.2" + resolved "https://registry.yarnpkg.com/@patternfly/react-styles/-/react-styles-4.8.2.tgz#4796a77b658541d75d616e2e2a00fc5d7ec42bc7" + integrity sha512-JLVZTUYa8LIyASLvfiAgByLgNcg+OPkuXSh8Za5KdjqrBaNVQ3Wlul+oWQGwlGjbq7KSiyDg1oWemxOuLJH1VQ== + "@patternfly/react-table@^4.20.15": version "4.20.15" resolved "https://registry.yarnpkg.com/@patternfly/react-table/-/react-table-4.20.15.tgz#f40ea3eb47b7d05dbae2e7d7668209fe08c111af" @@ -1492,6 +1529,11 @@ lodash "^4.17.19" tslib "1.13.0" +"@patternfly/react-tokens@^4.10.2": + version "4.10.2" + resolved "https://registry.yarnpkg.com/@patternfly/react-tokens/-/react-tokens-4.10.2.tgz#fd0054379ac81c8490b901b5b8fb408263ce91fe" + integrity sha512-/G1MENPxVY7X9UUuieO79yfjJ3g6KjBUBsBQVKOQplCxuvcRCF1MpmQKAxfg9Yb804MbPY+IVzVD3c4u9S3Iww== + "@patternfly/react-tokens@^4.9.26": version "4.9.26" resolved "https://registry.yarnpkg.com/@patternfly/react-tokens/-/react-tokens-4.9.26.tgz#320759bceef71ff752d79acea278c6cdada9e51f" @@ -4085,6 +4127,80 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +d3-array@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" + integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== + +d3-collection@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" + integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== + +d3-color@1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" + integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== + +d3-ease@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.7.tgz#9a834890ef8b8ae8c558b2fe55bd57f5993b85e2" + integrity sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ== + +d3-format@1: + version "1.4.5" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.5.tgz#374f2ba1320e3717eb74a9356c67daee17a7edb4" + integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ== + +d3-interpolate@1, d3-interpolate@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" + integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== + dependencies: + d3-color "1" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +d3-scale@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.7.tgz#fa90324b3ea8a776422bd0472afab0b252a0945d" + integrity sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw== + dependencies: + d3-array "^1.2.0" + d3-collection "1" + d3-color "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" + +d3-shape@^1.0.0, d3-shape@^1.2.0: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +d3-time-format@2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.3.0.tgz#107bdc028667788a8924ba040faf1fbccd5a7850" + integrity sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ== + dependencies: + d3-time "1" + +d3-time@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== + +d3-timer@^1.0.0: + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" + integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -4239,6 +4355,18 @@ del@^4.1.1: pify "^4.0.1" rimraf "^2.6.3" +delaunator@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-4.0.1.tgz#3d779687f57919a7a418f8ab947d3bddb6846957" + integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag== + +delaunay-find@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/delaunay-find/-/delaunay-find-0.0.5.tgz#5fb37e6509da934881b4b16c08898ac89862c097" + integrity sha512-7yAJ/wmKWj3SgqjtkGqT/RCwI0HWAo5YnHMoF5nYXD8cdci+YSo23iPmgrZUNOpDxRWN91PqxUvMMr2lKpjr+w== + dependencies: + delaunator "^4.0.0" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -5822,7 +5950,7 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.1.0: +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -7139,7 +7267,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= @@ -9323,7 +9451,7 @@ prop-types-extra@^1.1.0: react-is "^16.3.2" warning "^4.0.0" -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -9548,6 +9676,11 @@ react-error-overlay@^6.0.9: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== +react-fast-compare@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" + integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== + react-is@^16.3.2, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -11576,6 +11709,213 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +victory-area@^35.4.4: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-area/-/victory-area-35.4.8.tgz#6c46a7871fc370257d49dddd6cba24306eb31aed" + integrity sha512-eNr6ZFonAhCHoCetA9g5fJxFn+g+5YpgBmlbxwzE7kgKg+jH7+ViD/R2aNcY6aoljiRyE6DbSVAxDiksPp0q1A== + dependencies: + d3-shape "^1.2.0" + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-axis@^35.4.4, victory-axis@^35.4.8: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-axis/-/victory-axis-35.4.8.tgz#0a7fa1889d8a6fd9bb6b50f49ef3097b2e2740be" + integrity sha512-+DcevVoIL6tjbTHwGZ2DzZiRl+Pwwowuf99mL10ECRzY+Iuc+s+x4o3gpw/HWJ/dGOyD+kPKPcwilmaQLnEOhQ== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-bar@^35.4.4: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-bar/-/victory-bar-35.4.8.tgz#8d5e92d0ff02edf932c119a114fefe6f79dabe63" + integrity sha512-9EUxHoX2R7t/iOZEWDtpypX13V2+Pngo2V3I9uW7lHtg+SCKTjGjHP1sJSbwLP3WxHl7dHg3Jg+ok04cych6XQ== + dependencies: + d3-shape "^1.2.0" + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-brush-container@^35.4.8: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-brush-container/-/victory-brush-container-35.4.8.tgz#de8004a19c03c9a9b00e00052f682e7dad0b6892" + integrity sha512-/nTpCijvLfCr86M5P3sr8umLsRJM7GaYODqagRChcPIS5O4oEzRZsgEVhOYmWZZiS56PIjMoLAzMBvgsiwBsDg== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + react-fast-compare "^2.0.0" + victory-core "^35.4.8" + +victory-chart@^35.4.4: + version "35.4.9" + resolved "https://registry.yarnpkg.com/victory-chart/-/victory-chart-35.4.9.tgz#542caae68cde0dabeaab8dbff81eb630cd69daa6" + integrity sha512-OM8LFjBdzc2iujPlNj7WuwygMdCFjKLGWPN9dxzkpPhGaqQnH+k1rQaEz/DQC42x83QRlU93VwVcRTl9h3MzeA== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + react-fast-compare "^2.0.0" + victory-axis "^35.4.8" + victory-core "^35.4.8" + victory-polar-axis "^35.4.8" + victory-shared-events "^35.4.9" + +victory-core@^35.4.4, victory-core@^35.4.8: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-core/-/victory-core-35.4.8.tgz#c62a6a28b8aa8ad6bbff36e7fbe8945215ddfaf0" + integrity sha512-4yhNeeyttEe24mAG4DUPP3RvditQU+364WTnUS05ZHPrACyDWYTOfN5+L0GzmvkJ3kbteQkfX3UJgpHwwqVmug== + dependencies: + d3-ease "^1.0.0" + d3-interpolate "^1.1.1" + d3-scale "^1.0.0" + d3-shape "^1.2.0" + d3-timer "^1.0.0" + lodash "^4.17.19" + prop-types "^15.5.8" + react-fast-compare "^2.0.0" + +victory-create-container@^35.4.4: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-create-container/-/victory-create-container-35.4.8.tgz#d0f5d2b6d664bc29399899db15c01e59b56a3b43" + integrity sha512-1qYRi+npvvWurDjdrC2IthxvTWeKcP1nw8bw2OpL+oG21k/mQBrPGT2GtAmUBGp3e8LDr6BwrCx32FGd01PWYw== + dependencies: + lodash "^4.17.19" + victory-brush-container "^35.4.8" + victory-core "^35.4.8" + victory-cursor-container "^35.4.8" + victory-selection-container "^35.4.8" + victory-voronoi-container "^35.4.8" + victory-zoom-container "^35.4.8" + +victory-cursor-container@^35.4.8: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-cursor-container/-/victory-cursor-container-35.4.8.tgz#ca85dd05ecec929dac93c53640b6d874c725a2f7" + integrity sha512-KLQug3j4dY8nkcL5CrPqO/pz48hH9chLS86eFiN56gUzLCHx81lEujc01YrsFxQat1cOyC3LghyM+pnexLMWEQ== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-group@^35.4.4: + version "35.4.9" + resolved "https://registry.yarnpkg.com/victory-group/-/victory-group-35.4.9.tgz#55b3049d80147843eadf86355dcf02e867a56f3c" + integrity sha512-JhJYD/ykPVKFq8ZATTpj8zA1Y8f6pXVoD9o/qBcRMggyfjPglV4rGdg6NnFCTV5bK/YMV5jYiSvZpdJlBtQpPQ== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + react-fast-compare "^2.0.0" + victory-core "^35.4.8" + victory-shared-events "^35.4.9" + +victory-legend@^35.4.4: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-legend/-/victory-legend-35.4.8.tgz#179d34f747d4e40ccb3ab9215367d355034cdac3" + integrity sha512-QI8zZLm8JipzzlAfJjpJm1MHl6FVcXWJOqU2XMl18RCkwDesukIiBO4dU8UAvNRkqxLRmkJzywFXSp3LFEah0Q== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-line@^35.4.4: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-line/-/victory-line-35.4.8.tgz#0460196a5cf66a0f04121d644884e7c5f9605a57" + integrity sha512-RJ/Wqon7PS07NRZnlku2C8+cJ48ruunizvKtl7HVv15e1hybo/dCg3dD2IizrO6vF/ja8Iv/RZ2YBDe/nWywrg== + dependencies: + d3-shape "^1.2.0" + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-pie@^35.4.4: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-pie/-/victory-pie-35.4.8.tgz#8c33927a892249f255ee219a982c72acffefd443" + integrity sha512-1+FnHdlqYqQzuiA/Psa77dsXcK1sKbXEUjNgnwfEZSUY2HX5v3fQ0sk4AiZhnVVsz6Rp+Wl4We/cca1PHp7i/w== + dependencies: + d3-shape "^1.0.0" + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-polar-axis@^35.4.8: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-polar-axis/-/victory-polar-axis-35.4.8.tgz#daedd7aa26a515acd476adb176a8e6a29c6934db" + integrity sha512-rhNGYUj7A70ZoHyta0ma3WD12Kv162Mf0AmFLvfxC6W+4eh2uwgGE8j+CJBW+/HbzLhFoeDY+aTe0FqJPLiO4A== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-scatter@^35.4.4: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-scatter/-/victory-scatter-35.4.8.tgz#8e48c8b5669cb7096bb09aabfbe3c288ad880729" + integrity sha512-UWyYgUhvdMFBkzBrgvN5WFCFX1E7tG6EjLNvAhsMoGK2eVH69QzC7Aiun+hLeXUXcssg2Gi1+f/w4rrxpdpZzw== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-selection-container@^35.4.8: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-selection-container/-/victory-selection-container-35.4.8.tgz#e356700230b731b015a0f3a8820e7c62b86c6ab7" + integrity sha512-2I2pEoUwjEltm0hJO+EwTlcrVhfvchph3OlcGp3N/Kw9q5veS/gfvcQMwur0FjS2GNwwCSjW/Gbv8zv31B/xFg== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-shared-events@^35.4.9: + version "35.4.9" + resolved "https://registry.yarnpkg.com/victory-shared-events/-/victory-shared-events-35.4.9.tgz#e613acbd154d990728276de47de5c37f6960164f" + integrity sha512-AW6iYsZn+2kmRNb+RKzAze6z8/u5uQakBpkKsVl/AI43uzlWNEQELIfJOcFfTbM2Qo1vkwJCSz0S9mrbt2meAw== + dependencies: + json-stringify-safe "^5.0.1" + lodash "^4.17.19" + prop-types "^15.5.8" + react-fast-compare "^2.0.0" + victory-core "^35.4.8" + +victory-stack@^35.4.4: + version "35.4.9" + resolved "https://registry.yarnpkg.com/victory-stack/-/victory-stack-35.4.9.tgz#d4b2b490c284da277f507c2d7a88a4ec0312314b" + integrity sha512-fePjKUM5zfp3+5lJPtow/6HAglwcVb1JBDNIsrpChn78G3NvbpTZUlMlNdbSmE1+xDLFEWBGJ9oUI/gjjWynGA== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + react-fast-compare "^2.0.0" + victory-core "^35.4.8" + victory-shared-events "^35.4.9" + +victory-tooltip@^35.4.4, victory-tooltip@^35.4.8: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-tooltip/-/victory-tooltip-35.4.8.tgz#0d29276d3717cfbf500dd3d571c2087cd7c7a4c8" + integrity sha512-CZLsLgfxUA6PdaIxUgIk4DJfoo5DRM70OLTZFekctQkvwt2S6Fc7DSv47ZvFw7nL6SEVaNjwsDmTZnabUJb+4Q== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + +victory-voronoi-container@^35.4.4, victory-voronoi-container@^35.4.8: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-voronoi-container/-/victory-voronoi-container-35.4.8.tgz#ab25bcc5b34cacf08fe8d738b88d89c8f9c98d1c" + integrity sha512-+rQRr2SwdixwxvUSF4NUsPj7yWpkeQcQZWcPz8NNNpaCBxN1HNVQ41W7DmAZ98Spta2gkrk6888Q31zQeiGDXw== + dependencies: + delaunay-find "0.0.5" + lodash "^4.17.19" + prop-types "^15.5.8" + react-fast-compare "^2.0.0" + victory-core "^35.4.8" + victory-tooltip "^35.4.8" + +victory-zoom-container@^35.4.4, victory-zoom-container@^35.4.8: + version "35.4.8" + resolved "https://registry.yarnpkg.com/victory-zoom-container/-/victory-zoom-container-35.4.8.tgz#4e9a86bf79245a3937b7a60163b47bc8e5ff15ae" + integrity sha512-jLHm0/wttiRIzCEdxK3SL/emNUkfc9Rt64I2Yp+9OuP+YJP+5/MkuavjjnYaVowBD3sbn6ByGBMkJ8e+Q/U7dA== + dependencies: + lodash "^4.17.19" + prop-types "^15.5.8" + victory-core "^35.4.8" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" diff --git a/cmd/kobs/kobs.go b/cmd/kobs/kobs.go index a173599dd..5715a431d 100644 --- a/cmd/kobs/kobs.go +++ b/cmd/kobs/kobs.go @@ -9,6 +9,7 @@ import ( "github.com/kobsio/kobs/pkg/api" "github.com/kobsio/kobs/pkg/api/clusters" + "github.com/kobsio/kobs/pkg/api/datasources/datasource" "github.com/kobsio/kobs/pkg/app" "github.com/kobsio/kobs/pkg/metrics" "github.com/kobsio/kobs/pkg/version" @@ -20,7 +21,8 @@ import ( // Config is the complete configuration for kobs. type Config struct { - Clusters clusters.Config `yaml:"clusters"` + Clusters clusters.Config `yaml:"clusters"` + Datasources []datasource.Config `yaml:"datasources"` } var ( @@ -125,7 +127,7 @@ func main() { } go appServer.Start() - apiServer, err := api.New(config.Clusters) + apiServer, err := api.New(config.Clusters, config.Datasources) if err != nil { log.WithError(err).Fatalf("Could not create API server.") } diff --git a/deploy/docker/envoy/envoy.yaml b/deploy/docker/envoy/envoy.yaml index 374903b94..cc47b6628 100644 --- a/deploy/docker/envoy/envoy.yaml +++ b/deploy/docker/envoy/envoy.yaml @@ -37,6 +37,12 @@ static_resources: cluster: api-server max_stream_duration: grpc_timeout_header_max: 0s + - match: + prefix: "/datasources." + route: + cluster: api-server + max_stream_duration: + grpc_timeout_header_max: 0s - match: prefix: "/" route: diff --git a/deploy/docker/kobs/config.yaml b/deploy/docker/kobs/config.yaml index 3922bfc45..0ff589a46 100644 --- a/deploy/docker/kobs/config.yaml +++ b/deploy/docker/kobs/config.yaml @@ -7,3 +7,9 @@ clusters: metrics: prometheus logs: elasticsearch traces: jaeger + +datasources: + - name: prometheus + type: prometheus + prometheus: + address: http://localhost:9090 diff --git a/deploy/kustomize/crds/kobs.io_applications.yaml b/deploy/kustomize/crds/kobs.io_applications.yaml index 31b1f5186..229cd29c6 100644 --- a/deploy/kustomize/crds/kobs.io_applications.yaml +++ b/deploy/kustomize/crds/kobs.io_applications.yaml @@ -53,6 +53,131 @@ spec: type: string type: object type: array + logs: + type: object + metrics: + description: ApplicationMetrics defines the structure of the metrics + section of an application. It contains the name of the datasource, + which is the same as the metrics datasource for a cluster, when the + user doesn't set this field in the Application CR. It also contains + a list of variables and charts. The health field can contain a single + chart, which is used to display the health of an application in the + applications overview. + properties: + charts: + items: + description: ApplicationMetricsChart represents a chart for the + metrics view. A chart must contain a title, a type (line, area, + bar chart, etc.). It can also contain a unit for the y axis. + If the stacked option is set to true all series for the chart + will be stacked. The size parameter can be used to define the + width of a chart for large screens. We are using a 12 column + grid to display the charts, so the number must be between 1 + and 12. The last option is a list of queries, which are executed + against the datasource (e.g. For Prometheus this will be a list + of PromQL queries). + properties: + queries: + items: + description: ApplicationMetricsQuery presents a single query + to get the data, which should be shown in the chart for + the metrics section. A query consists of a query string + (e.g. PromQL) and a lable. The query and the label can + contain variables via Go templating syntax (e.g. {{ .VARIABLE-NAME + }}). For Prometheus the label can also contain a label + from the returned series with the same syntax (e.g. {{ + .SERIES-LABEL }}). + properties: + label: + type: string + query: + type: string + type: object + type: array + size: + format: int64 + type: integer + stacked: + type: boolean + title: + type: string + type: + type: string + unit: + type: string + type: object + type: array + datasource: + type: string + health: + description: ApplicationMetricsChart represents a chart for the + metrics view. A chart must contain a title, a type (line, area, + bar chart, etc.). It can also contain a unit for the y axis. If + the stacked option is set to true all series for the chart will + be stacked. The size parameter can be used to define the width + of a chart for large screens. We are using a 12 column grid to + display the charts, so the number must be between 1 and 12. The + last option is a list of queries, which are executed against the + datasource (e.g. For Prometheus this will be a list of PromQL + queries). + properties: + queries: + items: + description: ApplicationMetricsQuery presents a single query + to get the data, which should be shown in the chart for + the metrics section. A query consists of a query string + (e.g. PromQL) and a lable. The query and the label can contain + variables via Go templating syntax (e.g. {{ .VARIABLE-NAME + }}). For Prometheus the label can also contain a label from + the returned series with the same syntax (e.g. {{ .SERIES-LABEL + }}). + properties: + label: + type: string + query: + type: string + type: object + type: array + size: + format: int64 + type: integer + stacked: + type: boolean + title: + type: string + type: + type: string + unit: + type: string + type: object + variables: + items: + description: ApplicationMetricsVariable specifies a variable, + which can be used within the charts. A variable must contain + a name, a label and a query. It also can set the allowAll field + to true, which will include an "All" option in the variables + values. The values and value field must not be provided by the + user. These fields will be set by the GetVariables call. If + a user provide a "value", we will try to use it as the selected + value. + properties: + allowAll: + type: boolean + label: + type: string + name: + type: string + query: + type: string + value: + type: string + values: + items: + type: string + type: array + type: object + type: array + type: object name: type: string namespace: @@ -73,6 +198,8 @@ spec: type: string type: object type: array + traces: + type: object type: object required: - spec diff --git a/go.mod b/go.mod index 0f7ed824a..4b011f50b 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,8 @@ go 1.15 require ( github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.4.3 + github.com/prometheus/client_golang v1.9.0 + github.com/prometheus/common v0.15.0 github.com/sirupsen/logrus v1.7.0 github.com/spf13/pflag v1.0.5 google.golang.org/grpc v1.35.0 diff --git a/go.sum b/go.sum index fbd312f16..0e4e6e8b1 100644 --- a/go.sum +++ b/go.sum @@ -33,40 +33,92 @@ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBp github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= @@ -81,12 +133,19 @@ github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8 github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= @@ -110,6 +169,7 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -129,6 +189,7 @@ github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -136,23 +197,65 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= @@ -161,8 +264,24 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= @@ -171,28 +290,108 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU= +github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= @@ -201,16 +400,34 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 h1:hb9wdF1z5waM+dSIICn1l0DkLVDT3hqhhQsDNUmHPRE= @@ -248,7 +465,12 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -258,6 +480,7 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -266,6 +489,7 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -282,23 +506,33 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -306,10 +540,14 @@ golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201112073958-5cba982894dd h1:5CtCZbICpIOFdgO940moixOPjc0178IU44m4EjOO5IY= golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e h1:AyodaIpKjppX+cBfTASF2E1US3H2JFBj920Ot3rtDjs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -317,11 +555,14 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e h1:EHBhcS0mlXEAVwNyO2dLfjToGsyY4j24pTs2ScHnX7s= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -329,6 +570,7 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -339,6 +581,8 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -346,6 +590,7 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -361,6 +606,7 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -372,6 +618,7 @@ google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= @@ -382,6 +629,7 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -397,10 +645,15 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -418,26 +671,35 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -466,3 +728,4 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/pkg/api/api.go b/pkg/api/api.go index 7dabdd847..c9a636b73 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -5,6 +5,8 @@ import ( "os" "github.com/kobsio/kobs/pkg/api/clusters" + "github.com/kobsio/kobs/pkg/api/datasources" + "github.com/kobsio/kobs/pkg/api/datasources/datasource" "github.com/kobsio/kobs/pkg/generated/proto" "github.com/sirupsen/logrus" @@ -48,7 +50,7 @@ func (s *Server) Stop() { } // New return a new API server. -func New(clustersConfig clusters.Config) (*Server, error) { +func New(clustersConfig clusters.Config, datasourcesConfig []datasource.Config) (*Server, error) { listener, err := net.Listen("tcp", address) if err != nil { return nil, err @@ -59,9 +61,15 @@ func New(clustersConfig clusters.Config) (*Server, error) { return nil, err } + d, err := datasources.Load(datasourcesConfig) + if err != nil { + return nil, err + } + grpcServer := grpc.NewServer() reflection.Register(grpcServer) proto.RegisterClustersServer(grpcServer, c) + proto.RegisterDatasourcesServer(grpcServer, d) return &Server{ listener: listener, diff --git a/pkg/api/clusters/cluster/cluster.go b/pkg/api/clusters/cluster/cluster.go index 1c9b721d6..d5a135ee0 100644 --- a/pkg/api/clusters/cluster/cluster.go +++ b/pkg/api/clusters/cluster/cluster.go @@ -128,6 +128,10 @@ func (c *Cluster) GetApplications(ctx context.Context, namespace string) ([]*pro application.Namespace = app.Namespace application.Name = app.Name + if application.Metrics != nil && application.Metrics.Datasource == "" { + application.Metrics.Datasource = c.options.datasources.Metrics + } + applications = append(applications, application) } @@ -148,6 +152,10 @@ func (c *Cluster) GetApplication(ctx context.Context, namespace, name string) (* application.Namespace = namespace application.Name = name + if application.Metrics != nil && application.Metrics.Datasource == "" { + application.Metrics.Datasource = c.options.datasources.Metrics + } + return application, nil } diff --git a/pkg/api/datasources/datasource/datasource.go b/pkg/api/datasources/datasource/datasource.go new file mode 100644 index 000000000..d775fe465 --- /dev/null +++ b/pkg/api/datasources/datasource/datasource.go @@ -0,0 +1,46 @@ +package datasource + +import ( + "context" + + "github.com/kobsio/kobs/pkg/api/datasources/datasource/prometheus" + "github.com/kobsio/kobs/pkg/generated/proto" + + "github.com/sirupsen/logrus" +) + +var ( + log = logrus.WithFields(logrus.Fields{"package": "datasource"}) +) + +// Config is the configuration for a datasource. Each datasource must contain a name and type. Each datasource also +// contains a type specific configuration. +type Config struct { + Name string `yaml:"name"` + Type string `yaml:"type"` + Prometheus prometheus.Config `yaml:"prometheus"` +} + +// Datasource is the interface, which must be implemented by each datasource. Also when a datasource doesn't support +// logs or traces like Prometheus, it must implement the corresponding method, but it should return an error when the +// method is called. +type Datasource interface { + GetDatasource() (string, string) + GetVariables(ctx context.Context, options *proto.DatasourceOptions, variables []*proto.ApplicationMetricsVariable) ([]*proto.ApplicationMetricsVariable, error) + GetMetrics(ctx context.Context, options *proto.DatasourceOptions, variables []*proto.ApplicationMetricsVariable, queries []*proto.ApplicationMetricsQuery) ([]*proto.DatasourceMetrics, error) + GetLogs(ctx context.Context, options *proto.DatasourceOptions) error + GetTraces(ctx context.Context, options *proto.DatasourceOptions) error +} + +// New returns a new datasource for the given configuration. It checks the provided type and returns the corresponding +// datasource config. If the user provided an invalid datasource we just log a warning, but we do not return an error. +func New(config Config) (Datasource, error) { + switch config.Type { + case "prometheus": + log.WithFields(logrus.Fields{"name": config.Name, "type": config.Type}).Debugf("Load datasource.") + return prometheus.New(config.Name, config.Prometheus) + default: + log.WithFields(logrus.Fields{"type": config.Type}).Warnf("Invalid datasource.") + return nil, nil + } +} diff --git a/pkg/api/datasources/datasource/prometheus/helpers.go b/pkg/api/datasources/datasource/prometheus/helpers.go new file mode 100644 index 000000000..28faf8d4e --- /dev/null +++ b/pkg/api/datasources/datasource/prometheus/helpers.go @@ -0,0 +1,66 @@ +package prometheus + +import ( + "bytes" + "text/template" + "time" +) + +// appendIfMissing appends a value to a slice, when this values doesn't exist in the slice already. +func appendIfMissing(items []string, item string) []string { + for _, ele := range items { + if ele == item { + return items + } + } + + return append(items, item) +} + +// valueExists checks if an value exists in a slice. When the value exists the function returns true, if not it will +// return false. +func valueExists(items []string, item string) bool { + for _, ele := range items { + if ele == item { + return true + } + } + + return false +} + +// queryInterpolation is used to replace variables in a query. +func queryInterpolation(query string, variables map[string]string) (string, error) { + tpl, err := template.New("query").Parse(query) + if err != nil { + return "", err + } + + var buf bytes.Buffer + err = tpl.Execute(&buf, variables) + if err != nil { + return "", err + } + + return buf.String(), nil +} + +// getSteps returns the duration for the Prometheus resolution for a given start and end time. +func getSteps(start, end int64) time.Duration { + switch seconds := end - start; { + case seconds <= 6*3600: + return time.Duration(30 * time.Second) + case seconds <= 12*3600: + return time.Duration(60 * time.Second) + case seconds <= 24*3600: + return time.Duration(120 * time.Second) + case seconds <= 2*24*3600: + return time.Duration(300 * time.Second) + case seconds <= 7*24*3600: + return time.Duration(1800 * time.Second) + case seconds <= 30*24*3600: + return time.Duration(3600 * time.Second) + default: + return time.Duration((end-start)/1000) * time.Second + } +} diff --git a/pkg/api/datasources/datasource/prometheus/prometheus.go b/pkg/api/datasources/datasource/prometheus/prometheus.go new file mode 100644 index 000000000..6773660d0 --- /dev/null +++ b/pkg/api/datasources/datasource/prometheus/prometheus.go @@ -0,0 +1,269 @@ +package prometheus + +import ( + "context" + "fmt" + "net/http" + "strings" + "time" + + "github.com/kobsio/kobs/pkg/generated/proto" + + "github.com/prometheus/client_golang/api" + v1 "github.com/prometheus/client_golang/api/prometheus/v1" + "github.com/prometheus/common/model" + "github.com/sirupsen/logrus" +) + +var ( + log = logrus.WithFields(logrus.Fields{"package": "prometheus"}) +) + +// Config contains all required fields to create a new Prometheus datasource. +type Config struct { + Address string `yaml:"address"` + Username string `yaml:"username"` + Password string `yaml:"password"` + Token string `yaml:"token"` +} + +type basicAuthTransport struct { + Transport http.RoundTripper + username string + password string +} + +type tokenAuthTransporter struct { + Transport http.RoundTripper + token string +} + +func (bat basicAuthTransport) RoundTrip(req *http.Request) (*http.Response, error) { + req.SetBasicAuth(bat.username, bat.password) + return bat.Transport.RoundTrip(req) +} + +func (tat tokenAuthTransporter) RoundTrip(req *http.Request) (*http.Response, error) { + req.Header.Set("Authorization", "Bearer "+tat.token) + return tat.Transport.RoundTrip(req) +} + +// Prometheus implements the Prometheus datasource. +type Prometheus struct { + name string + v1api v1.API +} + +// GetDatasource returns the details for the datasource. Currently this is only the name and the type of the datasource. +func (p *Prometheus) GetDatasource() (string, string) { + return p.name, "prometheus" +} + +// GetVariables returns all variable values. The values are label values for a Prometheus time series. The labels are +// retrieved via a PromQL query. +// To get the values we are looping over all queries and pre selecting the first value or all values, when the option +// is set. So we can use a variable in a following query. +func (p *Prometheus) GetVariables(ctx context.Context, options *proto.DatasourceOptions, variables []*proto.ApplicationMetricsVariable) ([]*proto.ApplicationMetricsVariable, error) { + if options == nil { + return nil, fmt.Errorf("datasource options are missing") + } + + var selectedValues map[string]string + selectedValues = make(map[string]string, len(variables)) + + for i := 0; i < len(variables); i++ { + query, err := queryInterpolation(variables[i].Query, selectedValues) + if err != nil { + return nil, err + } + + log.WithFields(logrus.Fields{"query": query}).Tracef("Query variables.") + + labelSets, _, err := p.v1api.Series(ctx, []string{query}, time.Unix(options.TimeStart, 0), time.Unix(options.TimeEnd, 0)) + if err != nil { + return nil, err + } + + var values []string + for _, labelSet := range labelSets { + if value, ok := labelSet[model.LabelName(variables[i].Label)]; ok { + values = appendIfMissing(values, string(value)) + } + } + + variables[i].Values = values + + if variables[i].AllowAll { + variables[i].Values = append([]string{"All"}, variables[i].Values...) + } + + if variables[i].Value == "" && len(variables[i].Values) > 0 { + variables[i].Value = variables[i].Values[0] + } else { + if !valueExists(variables[i].Values, variables[i].Value) && len(variables[i].Values) > 0 { + variables[i].Value = variables[i].Values[0] + } + } + + if variables[i].Value == "All" { + selectedValues[variables[i].Name] = strings.Join(variables[i].Values[1:], "|") + } else { + selectedValues[variables[i].Name] = variables[i].Value + } + } + + return variables, nil +} + +// GetMetrics returns all metrics for all given queries. For that we are creating a map of with the selected values for +// all variables. Then we are looping through the list of variables, replacing the variables with the selected value and +// run the PromQL against the configured Prometheus instance. In the last step we transform the result, so that it can +// be used in the React UI. +func (p *Prometheus) GetMetrics(ctx context.Context, options *proto.DatasourceOptions, variables []*proto.ApplicationMetricsVariable, queries []*proto.ApplicationMetricsQuery) ([]*proto.DatasourceMetrics, error) { + var selectedVariableValues map[string]string + selectedVariableValues = make(map[string]string, len(variables)) + + for _, variable := range variables { + if variable.Value == "All" { + selectedVariableValues[variable.Name] = strings.Join(variable.Values[1:], "|") + } else { + selectedVariableValues[variable.Name] = variable.Value + } + } + + if options == nil { + return nil, fmt.Errorf("options are missing") + } + + steps := getSteps(options.TimeStart, options.TimeEnd) + if options.Resolution != "" { + parsedDuration, err := time.ParseDuration(options.Resolution) + if err == nil { + steps = parsedDuration + } + } + + r := v1.Range{ + Start: time.Unix(options.TimeStart, 0), + End: time.Unix(options.TimeEnd, 0), + Step: steps, + } + + var metrics []*proto.DatasourceMetrics + + for _, query := range queries { + interpolatedQuery, err := queryInterpolation(query.Query, selectedVariableValues) + if err != nil { + return nil, err + } + + log.WithFields(logrus.Fields{"query": interpolatedQuery, "start": r.Start, "end": r.End}).Tracef("Query time series.") + + result, _, err := p.v1api.QueryRange(ctx, interpolatedQuery, r) + if err != nil { + return nil, err + } + + streams, ok := result.(model.Matrix) + if !ok { + return nil, err + } + + for _, stream := range streams { + var min float64 + var max float64 + + var data []*proto.DatasourceMetricsData + for index, value := range stream.Values { + val := float64(value.Value) + + if index == 0 { + min = val + max = val + } else { + if val < min { + min = val + } else if val > max { + max = val + } + } + + data = append(data, &proto.DatasourceMetricsData{ + X: value.Timestamp.Unix() * 1000, + Y: val, + }) + } + + var labels map[string]string + labels = make(map[string]string) + + for key, value := range stream.Metric { + labels[string(key)] = string(value) + } + + label, err := queryInterpolation(query.Label, labels) + if err != nil { + metrics = append(metrics, &proto.DatasourceMetrics{ + Label: query.Label, + Min: min, + Max: max, + Data: data, + }) + } else { + metrics = append(metrics, &proto.DatasourceMetrics{ + Label: label, + Min: min, + Max: max, + Data: data, + }) + } + } + } + + return metrics, nil +} + +// GetLogs is not implemented for Prometheus. +func (p *Prometheus) GetLogs(ctx context.Context, options *proto.DatasourceOptions) error { + return fmt.Errorf("logs interface isn't implemented for prometheus") +} + +// GetTraces is not implemented for Prometheus. +func (p *Prometheus) GetTraces(ctx context.Context, options *proto.DatasourceOptions) error { + return fmt.Errorf("traces interface isn't implemented for prometheus") +} + +// New returns a new Prometheus datasource, which implements the datasource interface. A Prometheus datasource, contains +// a Prometheus API client. We also set the round tripper for basic or token authentication, when the settings are +// provided. +func New(name string, config Config) (*Prometheus, error) { + roundTripper := api.DefaultRoundTripper + + if config.Username != "" && config.Password != "" { + roundTripper = basicAuthTransport{ + Transport: roundTripper, + username: config.Username, + password: config.Password, + } + } + + if config.Token != "" { + roundTripper = tokenAuthTransporter{ + Transport: roundTripper, + token: config.Token, + } + } + + client, err := api.NewClient(api.Config{ + Address: config.Address, + RoundTripper: roundTripper, + }) + if err != nil { + return nil, err + } + + return &Prometheus{ + name: name, + v1api: v1.NewAPI(client), + }, nil +} diff --git a/pkg/api/datasources/datasources.go b/pkg/api/datasources/datasources.go new file mode 100644 index 000000000..606599d3c --- /dev/null +++ b/pkg/api/datasources/datasources.go @@ -0,0 +1,113 @@ +package datasources + +import ( + "context" + "fmt" + + "github.com/kobsio/kobs/pkg/api/datasources/datasource" + "github.com/kobsio/kobs/pkg/generated/proto" + + "github.com/sirupsen/logrus" +) + +var ( + log = logrus.WithFields(logrus.Fields{"package": "datasources"}) +) + +// Datasources contains all loaded datasources and implements the datasources service from the protocol buffers +// definition. +type Datasources struct { + proto.UnimplementedDatasourcesServer + datasources []datasource.Datasource +} + +func (d *Datasources) getDatasource(name string) datasource.Datasource { + for _, ds := range d.datasources { + n, _ := ds.GetDatasource() + if n == name { + return ds + } + } + + return nil +} + +// GetDatasource implements the GetDatasource from the Datasources service. It will return the name and type of a +// datasource by name. If no datasource for the given name could be found and error is returned. +func (d *Datasources) GetDatasource(ctx context.Context, getDatasourceRequest *proto.GetDatasourceRequest) (*proto.GetDatasourceResponse, error) { + log.WithFields(logrus.Fields{"name": getDatasourceRequest.Name}).Tracef("Get datasource.") + + ds := d.getDatasource(getDatasourceRequest.Name) + if ds == nil { + return nil, fmt.Errorf("invalid datasource name") + } + + n, t := ds.GetDatasource() + + return &proto.GetDatasourceResponse{ + Name: n, + Type: t, + }, nil +} + +// GetVariables implements the GetVariables for the Datasources service. It returns the variables for a metrics view, +// including the values and value field. +func (d *Datasources) GetVariables(ctx context.Context, getVariablesRequest *proto.GetVariablesRequest) (*proto.GetVariablesResponse, error) { + log.WithFields(logrus.Fields{"name": getVariablesRequest.Name}).Tracef("Get variables.") + + ds := d.getDatasource(getVariablesRequest.Name) + if ds == nil { + return nil, fmt.Errorf("invalid datasource name") + } + + variables, err := ds.GetVariables(ctx, getVariablesRequest.Options, getVariablesRequest.Variables) + if err != nil { + return nil, err + } + + return &proto.GetVariablesResponse{ + Variables: variables, + }, nil +} + +// GetMetrics implements the GetMetrics for the Datasources service. It returns the a series of metrics for a list of +// given queries. +func (d *Datasources) GetMetrics(ctx context.Context, getMetricsRequest *proto.GetMetricsRequest) (*proto.GetMetricsResponse, error) { + log.WithFields(logrus.Fields{"name": getMetricsRequest.Name}).Tracef("Get metrics.") + + ds := d.getDatasource(getMetricsRequest.Name) + if ds == nil { + return nil, fmt.Errorf("invalid datasource name") + } + + metrics, err := ds.GetMetrics(ctx, getMetricsRequest.Options, getMetricsRequest.Variables, getMetricsRequest.Queries) + if err != nil { + return nil, err + } + + return &proto.GetMetricsResponse{ + Metrics: metrics, + }, nil +} + +// Load loads all given datasources from the configuration, so that we can use them within the datasources gRPC service. +func Load(config []datasource.Config) (*Datasources, error) { + var datasources []datasource.Datasource + + for _, dsConfig := range config { + ds, err := datasource.New(dsConfig) + if err != nil { + return nil, err + } + + if ds != nil { + datasources = append(datasources, ds) + } + } + + log.WithFields(logrus.Fields{"datasources count": len(datasources)}).Debugf("Loaded datasources.") + + return &Datasources{ + datasources: datasources, + }, nil +} diff --git a/pkg/generated/proto/application.pb.go b/pkg/generated/proto/application.pb.go new file mode 100644 index 000000000..2d058ea83 --- /dev/null +++ b/pkg/generated/proto/application.pb.go @@ -0,0 +1,908 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: application.proto + +package proto + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +// Application is the specification for an application. This specification is also used for the Kubernetes CRD as +// ApplicationSpec. +// This is also the reason why we use istio.io/tools/cmd/protoc-gen-deepcopy within the code generation, to generate the +// deepcopy function, which are required to use the Application within a CRD. +type Application struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Links []*ApplicationLink `protobuf:"bytes,4,rep,name=links,proto3" json:"links,omitempty"` + Resources []*ApplicationResources `protobuf:"bytes,5,rep,name=resources,proto3" json:"resources,omitempty"` + Metrics *ApplicationMetrics `protobuf:"bytes,6,opt,name=metrics,proto3" json:"metrics,omitempty"` + Logs *ApplicationLogs `protobuf:"bytes,7,opt,name=logs,proto3" json:"logs,omitempty"` + Traces *ApplicationTraces `protobuf:"bytes,8,opt,name=traces,proto3" json:"traces,omitempty"` +} + +func (x *Application) Reset() { + *x = Application{} + if protoimpl.UnsafeEnabled { + mi := &file_application_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Application) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Application) ProtoMessage() {} + +func (x *Application) ProtoReflect() protoreflect.Message { + mi := &file_application_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Application.ProtoReflect.Descriptor instead. +func (*Application) Descriptor() ([]byte, []int) { + return file_application_proto_rawDescGZIP(), []int{0} +} + +func (x *Application) GetCluster() string { + if x != nil { + return x.Cluster + } + return "" +} + +func (x *Application) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *Application) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Application) GetLinks() []*ApplicationLink { + if x != nil { + return x.Links + } + return nil +} + +func (x *Application) GetResources() []*ApplicationResources { + if x != nil { + return x.Resources + } + return nil +} + +func (x *Application) GetMetrics() *ApplicationMetrics { + if x != nil { + return x.Metrics + } + return nil +} + +func (x *Application) GetLogs() *ApplicationLogs { + if x != nil { + return x.Logs + } + return nil +} + +func (x *Application) GetTraces() *ApplicationTraces { + if x != nil { + return x.Traces + } + return nil +} + +// ApplicationLink is the format of a link, which can be provided within an application. A link consists of a title, +// which is displayed in the frontend and the link link (title=Example, link=https://example.com). +type ApplicationLink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Link string `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` +} + +func (x *ApplicationLink) Reset() { + *x = ApplicationLink{} + if protoimpl.UnsafeEnabled { + mi := &file_application_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationLink) ProtoMessage() {} + +func (x *ApplicationLink) ProtoReflect() protoreflect.Message { + mi := &file_application_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationLink.ProtoReflect.Descriptor instead. +func (*ApplicationLink) Descriptor() ([]byte, []int) { + return file_application_proto_rawDescGZIP(), []int{1} +} + +func (x *ApplicationLink) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ApplicationLink) GetLink() string { + if x != nil { + return x.Link + } + return "" +} + +// ApplicationResources is the specification to retrieve all Kubernetes resources, which can be associated with the +// application. For that, a list of kinds (deployments, pods, statefulsets) as specified in +// app/src/components/resources/helpers.tsx and a selector must be set. Currently only label selector is supported, +// e.g. app=example. +type ApplicationResources struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kinds []string `protobuf:"bytes,1,rep,name=kinds,proto3" json:"kinds,omitempty"` + Selector string `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` +} + +func (x *ApplicationResources) Reset() { + *x = ApplicationResources{} + if protoimpl.UnsafeEnabled { + mi := &file_application_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationResources) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationResources) ProtoMessage() {} + +func (x *ApplicationResources) ProtoReflect() protoreflect.Message { + mi := &file_application_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationResources.ProtoReflect.Descriptor instead. +func (*ApplicationResources) Descriptor() ([]byte, []int) { + return file_application_proto_rawDescGZIP(), []int{2} +} + +func (x *ApplicationResources) GetKinds() []string { + if x != nil { + return x.Kinds + } + return nil +} + +func (x *ApplicationResources) GetSelector() string { + if x != nil { + return x.Selector + } + return "" +} + +// ApplicationMetrics defines the structure of the metrics section of an application. It contains the name of the +// datasource, which is the same as the metrics datasource for a cluster, when the user doesn't set this field in the +// Application CR. It also contains a list of variables and charts. +// The health field can contain a single chart, which is used to display the health of an application in the +// applications overview. +type ApplicationMetrics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Datasource string `protobuf:"bytes,1,opt,name=datasource,proto3" json:"datasource,omitempty"` + Health *ApplicationMetricsChart `protobuf:"bytes,2,opt,name=health,proto3" json:"health,omitempty"` + Variables []*ApplicationMetricsVariable `protobuf:"bytes,3,rep,name=variables,proto3" json:"variables,omitempty"` + Charts []*ApplicationMetricsChart `protobuf:"bytes,4,rep,name=charts,proto3" json:"charts,omitempty"` +} + +func (x *ApplicationMetrics) Reset() { + *x = ApplicationMetrics{} + if protoimpl.UnsafeEnabled { + mi := &file_application_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationMetrics) ProtoMessage() {} + +func (x *ApplicationMetrics) ProtoReflect() protoreflect.Message { + mi := &file_application_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationMetrics.ProtoReflect.Descriptor instead. +func (*ApplicationMetrics) Descriptor() ([]byte, []int) { + return file_application_proto_rawDescGZIP(), []int{3} +} + +func (x *ApplicationMetrics) GetDatasource() string { + if x != nil { + return x.Datasource + } + return "" +} + +func (x *ApplicationMetrics) GetHealth() *ApplicationMetricsChart { + if x != nil { + return x.Health + } + return nil +} + +func (x *ApplicationMetrics) GetVariables() []*ApplicationMetricsVariable { + if x != nil { + return x.Variables + } + return nil +} + +func (x *ApplicationMetrics) GetCharts() []*ApplicationMetricsChart { + if x != nil { + return x.Charts + } + return nil +} + +// ApplicationMetricsVariable specifies a variable, which can be used within the charts. A variable must contain a name, +// a label and a query. It also can set the allowAll field to true, which will include an "All" option in the variables +// values. +// The values and value field must not be provided by the user. These fields will be set by the GetVariables call. If a +// user provide a "value", we will try to use it as the selected value. +type ApplicationMetricsVariable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` + Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + AllowAll bool `protobuf:"varint,4,opt,name=allowAll,proto3" json:"allowAll,omitempty"` + Values []string `protobuf:"bytes,5,rep,name=values,proto3" json:"values,omitempty"` + Value string `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *ApplicationMetricsVariable) Reset() { + *x = ApplicationMetricsVariable{} + if protoimpl.UnsafeEnabled { + mi := &file_application_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationMetricsVariable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationMetricsVariable) ProtoMessage() {} + +func (x *ApplicationMetricsVariable) ProtoReflect() protoreflect.Message { + mi := &file_application_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationMetricsVariable.ProtoReflect.Descriptor instead. +func (*ApplicationMetricsVariable) Descriptor() ([]byte, []int) { + return file_application_proto_rawDescGZIP(), []int{4} +} + +func (x *ApplicationMetricsVariable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ApplicationMetricsVariable) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *ApplicationMetricsVariable) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *ApplicationMetricsVariable) GetAllowAll() bool { + if x != nil { + return x.AllowAll + } + return false +} + +func (x *ApplicationMetricsVariable) GetValues() []string { + if x != nil { + return x.Values + } + return nil +} + +func (x *ApplicationMetricsVariable) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +// ApplicationMetricsChart represents a chart for the metrics view. A chart must contain a title, a type (line, area, +// bar chart, etc.). It can also contain a unit for the y axis. If the stacked option is set to true all series for the +// chart will be stacked. The size parameter can be used to define the width of a chart for large screens. We are using +// a 12 column grid to display the charts, so the number must be between 1 and 12. The last option is a list of queries, +// which are executed against the datasource (e.g. For Prometheus this will be a list of PromQL queries). +type ApplicationMetricsChart struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Unit string `protobuf:"bytes,3,opt,name=unit,proto3" json:"unit,omitempty"` + Stacked bool `protobuf:"varint,4,opt,name=stacked,proto3" json:"stacked,omitempty"` + Size int64 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` + Queries []*ApplicationMetricsQuery `protobuf:"bytes,6,rep,name=queries,proto3" json:"queries,omitempty"` +} + +func (x *ApplicationMetricsChart) Reset() { + *x = ApplicationMetricsChart{} + if protoimpl.UnsafeEnabled { + mi := &file_application_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationMetricsChart) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationMetricsChart) ProtoMessage() {} + +func (x *ApplicationMetricsChart) ProtoReflect() protoreflect.Message { + mi := &file_application_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationMetricsChart.ProtoReflect.Descriptor instead. +func (*ApplicationMetricsChart) Descriptor() ([]byte, []int) { + return file_application_proto_rawDescGZIP(), []int{5} +} + +func (x *ApplicationMetricsChart) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ApplicationMetricsChart) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *ApplicationMetricsChart) GetUnit() string { + if x != nil { + return x.Unit + } + return "" +} + +func (x *ApplicationMetricsChart) GetStacked() bool { + if x != nil { + return x.Stacked + } + return false +} + +func (x *ApplicationMetricsChart) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *ApplicationMetricsChart) GetQueries() []*ApplicationMetricsQuery { + if x != nil { + return x.Queries + } + return nil +} + +// ApplicationMetricsQuery presents a single query to get the data, which should be shown in the chart for the metrics +// section. A query consists of a query string (e.g. PromQL) and a lable. The query and the label can contain variables +// via Go templating syntax (e.g. {{ .VARIABLE-NAME }}). For Prometheus the label can also contain a label from the +// returned series with the same syntax (e.g. {{ .SERIES-LABEL }}). +type ApplicationMetricsQuery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` +} + +func (x *ApplicationMetricsQuery) Reset() { + *x = ApplicationMetricsQuery{} + if protoimpl.UnsafeEnabled { + mi := &file_application_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationMetricsQuery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationMetricsQuery) ProtoMessage() {} + +func (x *ApplicationMetricsQuery) ProtoReflect() protoreflect.Message { + mi := &file_application_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationMetricsQuery.ProtoReflect.Descriptor instead. +func (*ApplicationMetricsQuery) Descriptor() ([]byte, []int) { + return file_application_proto_rawDescGZIP(), []int{6} +} + +func (x *ApplicationMetricsQuery) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *ApplicationMetricsQuery) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +type ApplicationLogs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ApplicationLogs) Reset() { + *x = ApplicationLogs{} + if protoimpl.UnsafeEnabled { + mi := &file_application_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationLogs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationLogs) ProtoMessage() {} + +func (x *ApplicationLogs) ProtoReflect() protoreflect.Message { + mi := &file_application_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationLogs.ProtoReflect.Descriptor instead. +func (*ApplicationLogs) Descriptor() ([]byte, []int) { + return file_application_proto_rawDescGZIP(), []int{7} +} + +type ApplicationTraces struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ApplicationTraces) Reset() { + *x = ApplicationTraces{} + if protoimpl.UnsafeEnabled { + mi := &file_application_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationTraces) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationTraces) ProtoMessage() {} + +func (x *ApplicationTraces) ProtoReflect() protoreflect.Message { + mi := &file_application_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationTraces.ProtoReflect.Descriptor instead. +func (*ApplicationTraces) Descriptor() ([]byte, []int) { + return file_application_proto_rawDescGZIP(), []int{8} +} + +var File_application_proto protoreflect.FileDescriptor + +var file_application_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xf3, 0x02, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, + 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, + 0x12, 0x3f, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x12, 0x39, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x30, 0x0a, 0x04, + 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x36, + 0x0a, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x06, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0x3b, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, + 0x69, 0x6e, 0x6b, 0x22, 0x48, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6b, + 0x69, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x69, 0x6e, 0x64, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xf7, 0x01, + 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x43, 0x68, 0x61, 0x72, 0x74, 0x52, 0x06, 0x68, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x12, 0x45, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x61, + 0x72, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x43, 0x68, 0x61, 0x72, 0x74, 0x52, + 0x06, 0x63, 0x68, 0x61, 0x72, 0x74, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, + 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, + 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0xc5, 0x01, 0x0a, 0x17, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x43, 0x68, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x17, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, + 0x11, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, + 0x67, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x6f, 0x62, 0x73, 0x69, 0x6f, 0x2f, 0x6b, 0x6f, 0x62, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_application_proto_rawDescOnce sync.Once + file_application_proto_rawDescData = file_application_proto_rawDesc +) + +func file_application_proto_rawDescGZIP() []byte { + file_application_proto_rawDescOnce.Do(func() { + file_application_proto_rawDescData = protoimpl.X.CompressGZIP(file_application_proto_rawDescData) + }) + return file_application_proto_rawDescData +} + +var file_application_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_application_proto_goTypes = []interface{}{ + (*Application)(nil), // 0: application.Application + (*ApplicationLink)(nil), // 1: application.ApplicationLink + (*ApplicationResources)(nil), // 2: application.ApplicationResources + (*ApplicationMetrics)(nil), // 3: application.ApplicationMetrics + (*ApplicationMetricsVariable)(nil), // 4: application.ApplicationMetricsVariable + (*ApplicationMetricsChart)(nil), // 5: application.ApplicationMetricsChart + (*ApplicationMetricsQuery)(nil), // 6: application.ApplicationMetricsQuery + (*ApplicationLogs)(nil), // 7: application.ApplicationLogs + (*ApplicationTraces)(nil), // 8: application.ApplicationTraces +} +var file_application_proto_depIdxs = []int32{ + 1, // 0: application.Application.links:type_name -> application.ApplicationLink + 2, // 1: application.Application.resources:type_name -> application.ApplicationResources + 3, // 2: application.Application.metrics:type_name -> application.ApplicationMetrics + 7, // 3: application.Application.logs:type_name -> application.ApplicationLogs + 8, // 4: application.Application.traces:type_name -> application.ApplicationTraces + 5, // 5: application.ApplicationMetrics.health:type_name -> application.ApplicationMetricsChart + 4, // 6: application.ApplicationMetrics.variables:type_name -> application.ApplicationMetricsVariable + 5, // 7: application.ApplicationMetrics.charts:type_name -> application.ApplicationMetricsChart + 6, // 8: application.ApplicationMetricsChart.queries:type_name -> application.ApplicationMetricsQuery + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_application_proto_init() } +func file_application_proto_init() { + if File_application_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_application_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Application); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_application_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_application_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationResources); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_application_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationMetrics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_application_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationMetricsVariable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_application_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationMetricsChart); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_application_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationMetricsQuery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_application_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationLogs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_application_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationTraces); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_application_proto_rawDesc, + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_application_proto_goTypes, + DependencyIndexes: file_application_proto_depIdxs, + MessageInfos: file_application_proto_msgTypes, + }.Build() + File_application_proto = out.File + file_application_proto_rawDesc = nil + file_application_proto_goTypes = nil + file_application_proto_depIdxs = nil +} diff --git a/pkg/generated/proto/application_deepcopy.gen.go b/pkg/generated/proto/application_deepcopy.gen.go new file mode 100644 index 000000000..324c48b51 --- /dev/null +++ b/pkg/generated/proto/application_deepcopy.gen.go @@ -0,0 +1,204 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: application.proto + +package proto + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// DeepCopyInto supports using Application within kubernetes types, where deepcopy-gen is used. +func (in *Application) DeepCopyInto(out *Application) { + p := proto.Clone(in).(*Application) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Application. Required by controller-gen. +func (in *Application) DeepCopy() *Application { + if in == nil { + return nil + } + out := new(Application) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Application. Required by controller-gen. +func (in *Application) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using ApplicationLink within kubernetes types, where deepcopy-gen is used. +func (in *ApplicationLink) DeepCopyInto(out *ApplicationLink) { + p := proto.Clone(in).(*ApplicationLink) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationLink. Required by controller-gen. +func (in *ApplicationLink) DeepCopy() *ApplicationLink { + if in == nil { + return nil + } + out := new(ApplicationLink) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationLink. Required by controller-gen. +func (in *ApplicationLink) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using ApplicationResources within kubernetes types, where deepcopy-gen is used. +func (in *ApplicationResources) DeepCopyInto(out *ApplicationResources) { + p := proto.Clone(in).(*ApplicationResources) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationResources. Required by controller-gen. +func (in *ApplicationResources) DeepCopy() *ApplicationResources { + if in == nil { + return nil + } + out := new(ApplicationResources) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationResources. Required by controller-gen. +func (in *ApplicationResources) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using ApplicationMetrics within kubernetes types, where deepcopy-gen is used. +func (in *ApplicationMetrics) DeepCopyInto(out *ApplicationMetrics) { + p := proto.Clone(in).(*ApplicationMetrics) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationMetrics. Required by controller-gen. +func (in *ApplicationMetrics) DeepCopy() *ApplicationMetrics { + if in == nil { + return nil + } + out := new(ApplicationMetrics) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationMetrics. Required by controller-gen. +func (in *ApplicationMetrics) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using ApplicationMetricsVariable within kubernetes types, where deepcopy-gen is used. +func (in *ApplicationMetricsVariable) DeepCopyInto(out *ApplicationMetricsVariable) { + p := proto.Clone(in).(*ApplicationMetricsVariable) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationMetricsVariable. Required by controller-gen. +func (in *ApplicationMetricsVariable) DeepCopy() *ApplicationMetricsVariable { + if in == nil { + return nil + } + out := new(ApplicationMetricsVariable) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationMetricsVariable. Required by controller-gen. +func (in *ApplicationMetricsVariable) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using ApplicationMetricsChart within kubernetes types, where deepcopy-gen is used. +func (in *ApplicationMetricsChart) DeepCopyInto(out *ApplicationMetricsChart) { + p := proto.Clone(in).(*ApplicationMetricsChart) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationMetricsChart. Required by controller-gen. +func (in *ApplicationMetricsChart) DeepCopy() *ApplicationMetricsChart { + if in == nil { + return nil + } + out := new(ApplicationMetricsChart) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationMetricsChart. Required by controller-gen. +func (in *ApplicationMetricsChart) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using ApplicationMetricsQuery within kubernetes types, where deepcopy-gen is used. +func (in *ApplicationMetricsQuery) DeepCopyInto(out *ApplicationMetricsQuery) { + p := proto.Clone(in).(*ApplicationMetricsQuery) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationMetricsQuery. Required by controller-gen. +func (in *ApplicationMetricsQuery) DeepCopy() *ApplicationMetricsQuery { + if in == nil { + return nil + } + out := new(ApplicationMetricsQuery) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationMetricsQuery. Required by controller-gen. +func (in *ApplicationMetricsQuery) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using ApplicationLogs within kubernetes types, where deepcopy-gen is used. +func (in *ApplicationLogs) DeepCopyInto(out *ApplicationLogs) { + p := proto.Clone(in).(*ApplicationLogs) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationLogs. Required by controller-gen. +func (in *ApplicationLogs) DeepCopy() *ApplicationLogs { + if in == nil { + return nil + } + out := new(ApplicationLogs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationLogs. Required by controller-gen. +func (in *ApplicationLogs) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using ApplicationTraces within kubernetes types, where deepcopy-gen is used. +func (in *ApplicationTraces) DeepCopyInto(out *ApplicationTraces) { + p := proto.Clone(in).(*ApplicationTraces) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationTraces. Required by controller-gen. +func (in *ApplicationTraces) DeepCopy() *ApplicationTraces { + if in == nil { + return nil + } + out := new(ApplicationTraces) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationTraces. Required by controller-gen. +func (in *ApplicationTraces) DeepCopyInterface() interface{} { + return in.DeepCopy() +} diff --git a/pkg/generated/proto/applications.pb.go b/pkg/generated/proto/applications.pb.go deleted file mode 100644 index ad800d509..000000000 --- a/pkg/generated/proto/applications.pb.go +++ /dev/null @@ -1,349 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: applications.proto - -package proto - -import ( - proto "github.com/golang/protobuf/proto" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Application is the specification for an application. This specification is also used for the Kubernetes CRD as -// ApplicationSpec. -// This is also the reason why we use istio.io/tools/cmd/protoc-gen-deepcopy within the code generation, to generate the -// deepcopy function, which are required to use the Application within a CRD. -type Application struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Links []*ApplicationLink `protobuf:"bytes,4,rep,name=links,proto3" json:"links,omitempty"` - Resources []*ApplicationResources `protobuf:"bytes,5,rep,name=resources,proto3" json:"resources,omitempty"` -} - -func (x *Application) Reset() { - *x = Application{} - if protoimpl.UnsafeEnabled { - mi := &file_applications_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Application) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Application) ProtoMessage() {} - -func (x *Application) ProtoReflect() protoreflect.Message { - mi := &file_applications_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Application.ProtoReflect.Descriptor instead. -func (*Application) Descriptor() ([]byte, []int) { - return file_applications_proto_rawDescGZIP(), []int{0} -} - -func (x *Application) GetCluster() string { - if x != nil { - return x.Cluster - } - return "" -} - -func (x *Application) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *Application) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Application) GetLinks() []*ApplicationLink { - if x != nil { - return x.Links - } - return nil -} - -func (x *Application) GetResources() []*ApplicationResources { - if x != nil { - return x.Resources - } - return nil -} - -// ApplicationLink is the format of a link, which can be provided within an application. A link consists of a title, -// which is displayed in the frontend and the link link (title=Example, link=https://example.com). -type ApplicationLink struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Link string `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` -} - -func (x *ApplicationLink) Reset() { - *x = ApplicationLink{} - if protoimpl.UnsafeEnabled { - mi := &file_applications_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApplicationLink) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApplicationLink) ProtoMessage() {} - -func (x *ApplicationLink) ProtoReflect() protoreflect.Message { - mi := &file_applications_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ApplicationLink.ProtoReflect.Descriptor instead. -func (*ApplicationLink) Descriptor() ([]byte, []int) { - return file_applications_proto_rawDescGZIP(), []int{1} -} - -func (x *ApplicationLink) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *ApplicationLink) GetLink() string { - if x != nil { - return x.Link - } - return "" -} - -// ApplicationResources is the specification to retrieve all Kubernetes resources, which can be associated with the -// application. For that, a list of kinds (deployments, pods, statefulsets) as specified in -// app/src/components/resources/helpers.tsx and a selector must be set. Currently only label selector is supported, -// e.g. app=example. -type ApplicationResources struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Kinds []string `protobuf:"bytes,1,rep,name=kinds,proto3" json:"kinds,omitempty"` - Selector string `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` -} - -func (x *ApplicationResources) Reset() { - *x = ApplicationResources{} - if protoimpl.UnsafeEnabled { - mi := &file_applications_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApplicationResources) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApplicationResources) ProtoMessage() {} - -func (x *ApplicationResources) ProtoReflect() protoreflect.Message { - mi := &file_applications_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ApplicationResources.ProtoReflect.Descriptor instead. -func (*ApplicationResources) Descriptor() ([]byte, []int) { - return file_applications_proto_rawDescGZIP(), []int{2} -} - -func (x *ApplicationResources) GetKinds() []string { - if x != nil { - return x.Kinds - } - return nil -} - -func (x *ApplicationResources) GetSelector() string { - if x != nil { - return x.Selector - } - return "" -} - -var File_applications_proto protoreflect.FileDescriptor - -var file_applications_proto_rawDesc = []byte{ - 0x0a, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, - 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, - 0x6e, 0x6b, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x3b, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, - 0x6e, 0x6b, 0x22, 0x48, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6b, 0x69, - 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x69, 0x6e, 0x64, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x2c, 0x5a, 0x2a, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x6f, 0x62, 0x73, 0x69, - 0x6f, 0x2f, 0x6b, 0x6f, 0x62, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_applications_proto_rawDescOnce sync.Once - file_applications_proto_rawDescData = file_applications_proto_rawDesc -) - -func file_applications_proto_rawDescGZIP() []byte { - file_applications_proto_rawDescOnce.Do(func() { - file_applications_proto_rawDescData = protoimpl.X.CompressGZIP(file_applications_proto_rawDescData) - }) - return file_applications_proto_rawDescData -} - -var file_applications_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_applications_proto_goTypes = []interface{}{ - (*Application)(nil), // 0: applications.Application - (*ApplicationLink)(nil), // 1: applications.ApplicationLink - (*ApplicationResources)(nil), // 2: applications.ApplicationResources -} -var file_applications_proto_depIdxs = []int32{ - 1, // 0: applications.Application.links:type_name -> applications.ApplicationLink - 2, // 1: applications.Application.resources:type_name -> applications.ApplicationResources - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_applications_proto_init() } -func file_applications_proto_init() { - if File_applications_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_applications_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Application); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_applications_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationLink); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_applications_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationResources); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_applications_proto_rawDesc, - NumEnums: 0, - NumMessages: 3, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_applications_proto_goTypes, - DependencyIndexes: file_applications_proto_depIdxs, - MessageInfos: file_applications_proto_msgTypes, - }.Build() - File_applications_proto = out.File - file_applications_proto_rawDesc = nil - file_applications_proto_goTypes = nil - file_applications_proto_depIdxs = nil -} diff --git a/pkg/generated/proto/applications_deepcopy.gen.go b/pkg/generated/proto/applications_deepcopy.gen.go deleted file mode 100644 index 7b6f105d9..000000000 --- a/pkg/generated/proto/applications_deepcopy.gen.go +++ /dev/null @@ -1,78 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: applications.proto - -package proto - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// DeepCopyInto supports using Application within kubernetes types, where deepcopy-gen is used. -func (in *Application) DeepCopyInto(out *Application) { - p := proto.Clone(in).(*Application) - *out = *p -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Application. Required by controller-gen. -func (in *Application) DeepCopy() *Application { - if in == nil { - return nil - } - out := new(Application) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Application. Required by controller-gen. -func (in *Application) DeepCopyInterface() interface{} { - return in.DeepCopy() -} - -// DeepCopyInto supports using ApplicationLink within kubernetes types, where deepcopy-gen is used. -func (in *ApplicationLink) DeepCopyInto(out *ApplicationLink) { - p := proto.Clone(in).(*ApplicationLink) - *out = *p -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationLink. Required by controller-gen. -func (in *ApplicationLink) DeepCopy() *ApplicationLink { - if in == nil { - return nil - } - out := new(ApplicationLink) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationLink. Required by controller-gen. -func (in *ApplicationLink) DeepCopyInterface() interface{} { - return in.DeepCopy() -} - -// DeepCopyInto supports using ApplicationResources within kubernetes types, where deepcopy-gen is used. -func (in *ApplicationResources) DeepCopyInto(out *ApplicationResources) { - p := proto.Clone(in).(*ApplicationResources) - *out = *p -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationResources. Required by controller-gen. -func (in *ApplicationResources) DeepCopy() *ApplicationResources { - if in == nil { - return nil - } - out := new(ApplicationResources) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationResources. Required by controller-gen. -func (in *ApplicationResources) DeepCopyInterface() interface{} { - return in.DeepCopy() -} diff --git a/pkg/generated/proto/applications_grpc.pb.go b/pkg/generated/proto/applications_grpc.pb.go deleted file mode 100644 index da2ef3963..000000000 --- a/pkg/generated/proto/applications_grpc.pb.go +++ /dev/null @@ -1,137 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. - -package proto - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -// ApplicationsClient is the client API for Applications service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type ApplicationsClient interface { - GetApplications(ctx context.Context, in *GetApplicationsRequest, opts ...grpc.CallOption) (*GetApplicationsResponse, error) - GetApplication(ctx context.Context, in *GetApplicationRequest, opts ...grpc.CallOption) (*GetApplicationResponse, error) -} - -type applicationsClient struct { - cc grpc.ClientConnInterface -} - -func NewApplicationsClient(cc grpc.ClientConnInterface) ApplicationsClient { - return &applicationsClient{cc} -} - -func (c *applicationsClient) GetApplications(ctx context.Context, in *GetApplicationsRequest, opts ...grpc.CallOption) (*GetApplicationsResponse, error) { - out := new(GetApplicationsResponse) - err := c.cc.Invoke(ctx, "/clusters.Applications/GetApplications", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationsClient) GetApplication(ctx context.Context, in *GetApplicationRequest, opts ...grpc.CallOption) (*GetApplicationResponse, error) { - out := new(GetApplicationResponse) - err := c.cc.Invoke(ctx, "/clusters.Applications/GetApplication", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ApplicationsServer is the server API for Applications service. -// All implementations must embed UnimplementedApplicationsServer -// for forward compatibility -type ApplicationsServer interface { - GetApplications(context.Context, *GetApplicationsRequest) (*GetApplicationsResponse, error) - GetApplication(context.Context, *GetApplicationRequest) (*GetApplicationResponse, error) - mustEmbedUnimplementedApplicationsServer() -} - -// UnimplementedApplicationsServer must be embedded to have forward compatible implementations. -type UnimplementedApplicationsServer struct { -} - -func (UnimplementedApplicationsServer) GetApplications(context.Context, *GetApplicationsRequest) (*GetApplicationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetApplications not implemented") -} -func (UnimplementedApplicationsServer) GetApplication(context.Context, *GetApplicationRequest) (*GetApplicationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetApplication not implemented") -} -func (UnimplementedApplicationsServer) mustEmbedUnimplementedApplicationsServer() {} - -// UnsafeApplicationsServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to ApplicationsServer will -// result in compilation errors. -type UnsafeApplicationsServer interface { - mustEmbedUnimplementedApplicationsServer() -} - -func RegisterApplicationsServer(s grpc.ServiceRegistrar, srv ApplicationsServer) { - s.RegisterService(&Applications_ServiceDesc, srv) -} - -func _Applications_GetApplications_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationsServer).GetApplications(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/clusters.Applications/GetApplications", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationsServer).GetApplications(ctx, req.(*GetApplicationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Applications_GetApplication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationsServer).GetApplication(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/clusters.Applications/GetApplication", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationsServer).GetApplication(ctx, req.(*GetApplicationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// Applications_ServiceDesc is the grpc.ServiceDesc for Applications service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var Applications_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "clusters.Applications", - HandlerType: (*ApplicationsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetApplications", - Handler: _Applications_GetApplications_Handler, - }, - { - MethodName: "GetApplication", - Handler: _Applications_GetApplication_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "applications.proto", -} diff --git a/pkg/generated/proto/clusters.pb.go b/pkg/generated/proto/clusters.pb.go index f272e3dc7..82fbcc418 100644 --- a/pkg/generated/proto/clusters.pb.go +++ b/pkg/generated/proto/clusters.pb.go @@ -637,96 +637,95 @@ var File_clusters_proto protoreflect.FileDescriptor var file_clusters_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x12, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x31, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x22, 0x32, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x22, 0x37, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x49, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x22, 0x54, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, + 0x12, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x11, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x31, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0x58, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x22, 0x32, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x22, 0x37, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x49, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0x54, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0x57, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x63, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, + 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xae, 0x03, 0x0a, 0x08, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x63, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3b, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xae, 0x03, 0x0a, - 0x08, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0c, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0f, - 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, - 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x6f, 0x62, 0x73, - 0x69, 0x6f, 0x2f, 0x6b, 0x6f, 0x62, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x6f, 0x62, 0x73, 0x69, 0x6f, 0x2f, + 0x6b, 0x6f, 0x62, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -754,12 +753,12 @@ var file_clusters_proto_goTypes = []interface{}{ (*GetApplicationsResponse)(nil), // 8: clusters.GetApplicationsResponse (*GetApplicationRequest)(nil), // 9: clusters.GetApplicationRequest (*GetApplicationResponse)(nil), // 10: clusters.GetApplicationResponse - (*Application)(nil), // 11: applications.Application + (*Application)(nil), // 11: application.Application } var file_clusters_proto_depIdxs = []int32{ 6, // 0: clusters.GetResourcesResponse.resources:type_name -> clusters.Resources - 11, // 1: clusters.GetApplicationsResponse.applications:type_name -> applications.Application - 11, // 2: clusters.GetApplicationResponse.application:type_name -> applications.Application + 11, // 1: clusters.GetApplicationsResponse.applications:type_name -> application.Application + 11, // 2: clusters.GetApplicationResponse.application:type_name -> application.Application 0, // 3: clusters.Clusters.GetClusters:input_type -> clusters.GetClustersRequest 2, // 4: clusters.Clusters.GetNamespaces:input_type -> clusters.GetNamespacesRequest 4, // 5: clusters.Clusters.GetResources:input_type -> clusters.GetResourcesRequest @@ -782,7 +781,7 @@ func file_clusters_proto_init() { if File_clusters_proto != nil { return } - file_applications_proto_init() + file_application_proto_init() if !protoimpl.UnsafeEnabled { file_clusters_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClustersRequest); i { diff --git a/pkg/generated/proto/datasources.pb.go b/pkg/generated/proto/datasources.pb.go new file mode 100644 index 000000000..2e2868508 --- /dev/null +++ b/pkg/generated/proto/datasources.pb.go @@ -0,0 +1,1110 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: datasources.proto + +package proto + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +// GetDatasourceRequest is the request message to get the type of a datasource. Each datasource can be identified by +// it's name, so that only the name is required in this request. +type GetDatasourceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetDatasourceRequest) Reset() { + *x = GetDatasourceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetDatasourceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetDatasourceRequest) ProtoMessage() {} + +func (x *GetDatasourceRequest) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetDatasourceRequest.ProtoReflect.Descriptor instead. +func (*GetDatasourceRequest) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{0} +} + +func (x *GetDatasourceRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// GetDatasourceResponse is the response for a GetDatasource request. At the moment this only returns the type of the, +// datasource, but it can be extended later with other properties for a datasource. +// This request should never return any confidential properties of a datasource like username / password, which is +// required for the authentication against the datasource. +type GetDatasourceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *GetDatasourceResponse) Reset() { + *x = GetDatasourceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetDatasourceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetDatasourceResponse) ProtoMessage() {} + +func (x *GetDatasourceResponse) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetDatasourceResponse.ProtoReflect.Descriptor instead. +func (*GetDatasourceResponse) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{1} +} + +func (x *GetDatasourceResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetDatasourceResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// GetVariablesRequest is the request data needed to get all variables for the metrics view of an application. The +// request contains various options for the datasource (like start/end time) and the variables of an application. It +// also contains the name of the datasource, which should be used. +type GetVariablesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Options *DatasourceOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + Variables []*ApplicationMetricsVariable `protobuf:"bytes,3,rep,name=variables,proto3" json:"variables,omitempty"` +} + +func (x *GetVariablesRequest) Reset() { + *x = GetVariablesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetVariablesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetVariablesRequest) ProtoMessage() {} + +func (x *GetVariablesRequest) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetVariablesRequest.ProtoReflect.Descriptor instead. +func (*GetVariablesRequest) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{2} +} + +func (x *GetVariablesRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetVariablesRequest) GetOptions() *DatasourceOptions { + if x != nil { + return x.Options + } + return nil +} + +func (x *GetVariablesRequest) GetVariables() []*ApplicationMetricsVariable { + if x != nil { + return x.Variables + } + return nil +} + +// GetVariablesResponse is the response for a GetVariables request, it contains the variables of the application, with +// the values and value field. +type GetVariablesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Variables []*ApplicationMetricsVariable `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty"` +} + +func (x *GetVariablesResponse) Reset() { + *x = GetVariablesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetVariablesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetVariablesResponse) ProtoMessage() {} + +func (x *GetVariablesResponse) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetVariablesResponse.ProtoReflect.Descriptor instead. +func (*GetVariablesResponse) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{3} +} + +func (x *GetVariablesResponse) GetVariables() []*ApplicationMetricsVariable { + if x != nil { + return x.Variables + } + return nil +} + +// GetMetricsRequest is the structure of a call to get a time series for a chart. It must contain the name of the +// datasource, options like the start/end time and the user defined queries for the chart. +type GetMetricsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Options *DatasourceOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + Variables []*ApplicationMetricsVariable `protobuf:"bytes,3,rep,name=variables,proto3" json:"variables,omitempty"` + Queries []*ApplicationMetricsQuery `protobuf:"bytes,4,rep,name=queries,proto3" json:"queries,omitempty"` +} + +func (x *GetMetricsRequest) Reset() { + *x = GetMetricsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMetricsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMetricsRequest) ProtoMessage() {} + +func (x *GetMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMetricsRequest.ProtoReflect.Descriptor instead. +func (*GetMetricsRequest) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{4} +} + +func (x *GetMetricsRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetMetricsRequest) GetOptions() *DatasourceOptions { + if x != nil { + return x.Options + } + return nil +} + +func (x *GetMetricsRequest) GetVariables() []*ApplicationMetricsVariable { + if x != nil { + return x.Variables + } + return nil +} + +func (x *GetMetricsRequest) GetQueries() []*ApplicationMetricsQuery { + if x != nil { + return x.Queries + } + return nil +} + +// GetMetricsResponse is the response for a GetMetrics request. It contains the data needed to render the chart in the +// React UI. +type GetMetricsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Metrics []*DatasourceMetrics `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty"` +} + +func (x *GetMetricsResponse) Reset() { + *x = GetMetricsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMetricsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMetricsResponse) ProtoMessage() {} + +func (x *GetMetricsResponse) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMetricsResponse.ProtoReflect.Descriptor instead. +func (*GetMetricsResponse) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{5} +} + +func (x *GetMetricsResponse) GetMetrics() []*DatasourceMetrics { + if x != nil { + return x.Metrics + } + return nil +} + +type GetLogsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Options *DatasourceOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` +} + +func (x *GetLogsRequest) Reset() { + *x = GetLogsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLogsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLogsRequest) ProtoMessage() {} + +func (x *GetLogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLogsRequest.ProtoReflect.Descriptor instead. +func (*GetLogsRequest) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{6} +} + +func (x *GetLogsRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetLogsRequest) GetOptions() *DatasourceOptions { + if x != nil { + return x.Options + } + return nil +} + +type GetLogsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetLogsResponse) Reset() { + *x = GetLogsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLogsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLogsResponse) ProtoMessage() {} + +func (x *GetLogsResponse) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLogsResponse.ProtoReflect.Descriptor instead. +func (*GetLogsResponse) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{7} +} + +type GetTracesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Options *DatasourceOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` +} + +func (x *GetTracesRequest) Reset() { + *x = GetTracesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTracesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTracesRequest) ProtoMessage() {} + +func (x *GetTracesRequest) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTracesRequest.ProtoReflect.Descriptor instead. +func (*GetTracesRequest) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{8} +} + +func (x *GetTracesRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetTracesRequest) GetOptions() *DatasourceOptions { + if x != nil { + return x.Options + } + return nil +} + +type GetTracesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetTracesResponse) Reset() { + *x = GetTracesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTracesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTracesResponse) ProtoMessage() {} + +func (x *GetTracesResponse) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTracesResponse.ProtoReflect.Descriptor instead. +func (*GetTracesResponse) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{9} +} + +// DatasourceOptions contains various options, which are need to get metrics, logs and traces across different +// datasources. These can be general options like start time, end time and datasource specific options like the +// resolution for Prometheus series. +type DatasourceOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TimeStart int64 `protobuf:"varint,1,opt,name=timeStart,proto3" json:"timeStart,omitempty"` + TimeEnd int64 `protobuf:"varint,2,opt,name=timeEnd,proto3" json:"timeEnd,omitempty"` + Resolution string `protobuf:"bytes,3,opt,name=resolution,proto3" json:"resolution,omitempty"` +} + +func (x *DatasourceOptions) Reset() { + *x = DatasourceOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DatasourceOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DatasourceOptions) ProtoMessage() {} + +func (x *DatasourceOptions) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DatasourceOptions.ProtoReflect.Descriptor instead. +func (*DatasourceOptions) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{10} +} + +func (x *DatasourceOptions) GetTimeStart() int64 { + if x != nil { + return x.TimeStart + } + return 0 +} + +func (x *DatasourceOptions) GetTimeEnd() int64 { + if x != nil { + return x.TimeEnd + } + return 0 +} + +func (x *DatasourceOptions) GetResolution() string { + if x != nil { + return x.Resolution + } + return "" +} + +// DatasourceMetrics contains the label and all data points for a metric. It also contains the minimum and maximum value +// of all data points. +type DatasourceMetrics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` + Min float64 `protobuf:"fixed64,2,opt,name=min,proto3" json:"min,omitempty"` + Max float64 `protobuf:"fixed64,3,opt,name=max,proto3" json:"max,omitempty"` + Data []*DatasourceMetricsData `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *DatasourceMetrics) Reset() { + *x = DatasourceMetrics{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DatasourceMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DatasourceMetrics) ProtoMessage() {} + +func (x *DatasourceMetrics) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DatasourceMetrics.ProtoReflect.Descriptor instead. +func (*DatasourceMetrics) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{11} +} + +func (x *DatasourceMetrics) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *DatasourceMetrics) GetMin() float64 { + if x != nil { + return x.Min + } + return 0 +} + +func (x *DatasourceMetrics) GetMax() float64 { + if x != nil { + return x.Max + } + return 0 +} + +func (x *DatasourceMetrics) GetData() []*DatasourceMetricsData { + if x != nil { + return x.Data + } + return nil +} + +// DatasourceMetricsData is one data point for a metric. Each data point contains a timestamp and a value, where x is +// the timestamp and y is the value. +type DatasourceMetricsData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + X int64 `protobuf:"varint,1,opt,name=x,proto3" json:"x,omitempty"` + Y float64 `protobuf:"fixed64,2,opt,name=y,proto3" json:"y,omitempty"` +} + +func (x *DatasourceMetricsData) Reset() { + *x = DatasourceMetricsData{} + if protoimpl.UnsafeEnabled { + mi := &file_datasources_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DatasourceMetricsData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DatasourceMetricsData) ProtoMessage() {} + +func (x *DatasourceMetricsData) ProtoReflect() protoreflect.Message { + mi := &file_datasources_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DatasourceMetricsData.ProtoReflect.Descriptor instead. +func (*DatasourceMetricsData) Descriptor() ([]byte, []int) { + return file_datasources_proto_rawDescGZIP(), []int{12} +} + +func (x *DatasourceMetricsData) GetX() int64 { + if x != nil { + return x.X + } + return 0 +} + +func (x *DatasourceMetricsData) GetY() float64 { + if x != nil { + return x.Y + } + return 0 +} + +var File_datasources_proto protoreflect.FileDescriptor + +var file_datasources_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x1a, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x3f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x22, 0xaa, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x5d, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xe8, 0x01, 0x0a, + 0x11, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x45, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, + 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x4e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, + 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x07, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x5e, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x6f, + 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x6f, + 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x60, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x13, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x6b, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x85, + 0x01, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, + 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x36, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x33, 0x0a, 0x15, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, + 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x79, 0x32, 0xa5, 0x03, 0x0a, 0x0b, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x21, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1e, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, + 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6b, 0x6f, 0x62, 0x73, 0x69, 0x6f, 0x2f, 0x6b, 0x6f, 0x62, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_datasources_proto_rawDescOnce sync.Once + file_datasources_proto_rawDescData = file_datasources_proto_rawDesc +) + +func file_datasources_proto_rawDescGZIP() []byte { + file_datasources_proto_rawDescOnce.Do(func() { + file_datasources_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasources_proto_rawDescData) + }) + return file_datasources_proto_rawDescData +} + +var file_datasources_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_datasources_proto_goTypes = []interface{}{ + (*GetDatasourceRequest)(nil), // 0: datasources.GetDatasourceRequest + (*GetDatasourceResponse)(nil), // 1: datasources.GetDatasourceResponse + (*GetVariablesRequest)(nil), // 2: datasources.GetVariablesRequest + (*GetVariablesResponse)(nil), // 3: datasources.GetVariablesResponse + (*GetMetricsRequest)(nil), // 4: datasources.GetMetricsRequest + (*GetMetricsResponse)(nil), // 5: datasources.GetMetricsResponse + (*GetLogsRequest)(nil), // 6: datasources.GetLogsRequest + (*GetLogsResponse)(nil), // 7: datasources.GetLogsResponse + (*GetTracesRequest)(nil), // 8: datasources.GetTracesRequest + (*GetTracesResponse)(nil), // 9: datasources.GetTracesResponse + (*DatasourceOptions)(nil), // 10: datasources.DatasourceOptions + (*DatasourceMetrics)(nil), // 11: datasources.DatasourceMetrics + (*DatasourceMetricsData)(nil), // 12: datasources.DatasourceMetricsData + (*ApplicationMetricsVariable)(nil), // 13: application.ApplicationMetricsVariable + (*ApplicationMetricsQuery)(nil), // 14: application.ApplicationMetricsQuery +} +var file_datasources_proto_depIdxs = []int32{ + 10, // 0: datasources.GetVariablesRequest.options:type_name -> datasources.DatasourceOptions + 13, // 1: datasources.GetVariablesRequest.variables:type_name -> application.ApplicationMetricsVariable + 13, // 2: datasources.GetVariablesResponse.variables:type_name -> application.ApplicationMetricsVariable + 10, // 3: datasources.GetMetricsRequest.options:type_name -> datasources.DatasourceOptions + 13, // 4: datasources.GetMetricsRequest.variables:type_name -> application.ApplicationMetricsVariable + 14, // 5: datasources.GetMetricsRequest.queries:type_name -> application.ApplicationMetricsQuery + 11, // 6: datasources.GetMetricsResponse.metrics:type_name -> datasources.DatasourceMetrics + 10, // 7: datasources.GetLogsRequest.options:type_name -> datasources.DatasourceOptions + 10, // 8: datasources.GetTracesRequest.options:type_name -> datasources.DatasourceOptions + 12, // 9: datasources.DatasourceMetrics.data:type_name -> datasources.DatasourceMetricsData + 0, // 10: datasources.Datasources.GetDatasource:input_type -> datasources.GetDatasourceRequest + 2, // 11: datasources.Datasources.GetVariables:input_type -> datasources.GetVariablesRequest + 4, // 12: datasources.Datasources.GetMetrics:input_type -> datasources.GetMetricsRequest + 6, // 13: datasources.Datasources.GetLogs:input_type -> datasources.GetLogsRequest + 8, // 14: datasources.Datasources.GetTraces:input_type -> datasources.GetTracesRequest + 1, // 15: datasources.Datasources.GetDatasource:output_type -> datasources.GetDatasourceResponse + 3, // 16: datasources.Datasources.GetVariables:output_type -> datasources.GetVariablesResponse + 5, // 17: datasources.Datasources.GetMetrics:output_type -> datasources.GetMetricsResponse + 7, // 18: datasources.Datasources.GetLogs:output_type -> datasources.GetLogsResponse + 9, // 19: datasources.Datasources.GetTraces:output_type -> datasources.GetTracesResponse + 15, // [15:20] is the sub-list for method output_type + 10, // [10:15] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { file_datasources_proto_init() } +func file_datasources_proto_init() { + if File_datasources_proto != nil { + return + } + file_application_proto_init() + if !protoimpl.UnsafeEnabled { + file_datasources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetDatasourceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetDatasourceResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetVariablesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetVariablesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMetricsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMetricsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLogsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLogsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTracesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTracesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DatasourceOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DatasourceMetrics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_datasources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DatasourceMetricsData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_datasources_proto_rawDesc, + NumEnums: 0, + NumMessages: 13, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_datasources_proto_goTypes, + DependencyIndexes: file_datasources_proto_depIdxs, + MessageInfos: file_datasources_proto_msgTypes, + }.Build() + File_datasources_proto = out.File + file_datasources_proto_rawDesc = nil + file_datasources_proto_goTypes = nil + file_datasources_proto_depIdxs = nil +} diff --git a/pkg/generated/proto/datasources_deepcopy.gen.go b/pkg/generated/proto/datasources_deepcopy.gen.go new file mode 100644 index 000000000..17ab16653 --- /dev/null +++ b/pkg/generated/proto/datasources_deepcopy.gen.go @@ -0,0 +1,288 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: datasources.proto + +package proto + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// DeepCopyInto supports using GetDatasourceRequest within kubernetes types, where deepcopy-gen is used. +func (in *GetDatasourceRequest) DeepCopyInto(out *GetDatasourceRequest) { + p := proto.Clone(in).(*GetDatasourceRequest) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetDatasourceRequest. Required by controller-gen. +func (in *GetDatasourceRequest) DeepCopy() *GetDatasourceRequest { + if in == nil { + return nil + } + out := new(GetDatasourceRequest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetDatasourceRequest. Required by controller-gen. +func (in *GetDatasourceRequest) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using GetDatasourceResponse within kubernetes types, where deepcopy-gen is used. +func (in *GetDatasourceResponse) DeepCopyInto(out *GetDatasourceResponse) { + p := proto.Clone(in).(*GetDatasourceResponse) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetDatasourceResponse. Required by controller-gen. +func (in *GetDatasourceResponse) DeepCopy() *GetDatasourceResponse { + if in == nil { + return nil + } + out := new(GetDatasourceResponse) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetDatasourceResponse. Required by controller-gen. +func (in *GetDatasourceResponse) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using GetVariablesRequest within kubernetes types, where deepcopy-gen is used. +func (in *GetVariablesRequest) DeepCopyInto(out *GetVariablesRequest) { + p := proto.Clone(in).(*GetVariablesRequest) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetVariablesRequest. Required by controller-gen. +func (in *GetVariablesRequest) DeepCopy() *GetVariablesRequest { + if in == nil { + return nil + } + out := new(GetVariablesRequest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetVariablesRequest. Required by controller-gen. +func (in *GetVariablesRequest) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using GetVariablesResponse within kubernetes types, where deepcopy-gen is used. +func (in *GetVariablesResponse) DeepCopyInto(out *GetVariablesResponse) { + p := proto.Clone(in).(*GetVariablesResponse) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetVariablesResponse. Required by controller-gen. +func (in *GetVariablesResponse) DeepCopy() *GetVariablesResponse { + if in == nil { + return nil + } + out := new(GetVariablesResponse) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetVariablesResponse. Required by controller-gen. +func (in *GetVariablesResponse) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using GetMetricsRequest within kubernetes types, where deepcopy-gen is used. +func (in *GetMetricsRequest) DeepCopyInto(out *GetMetricsRequest) { + p := proto.Clone(in).(*GetMetricsRequest) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetMetricsRequest. Required by controller-gen. +func (in *GetMetricsRequest) DeepCopy() *GetMetricsRequest { + if in == nil { + return nil + } + out := new(GetMetricsRequest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetMetricsRequest. Required by controller-gen. +func (in *GetMetricsRequest) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using GetMetricsResponse within kubernetes types, where deepcopy-gen is used. +func (in *GetMetricsResponse) DeepCopyInto(out *GetMetricsResponse) { + p := proto.Clone(in).(*GetMetricsResponse) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetMetricsResponse. Required by controller-gen. +func (in *GetMetricsResponse) DeepCopy() *GetMetricsResponse { + if in == nil { + return nil + } + out := new(GetMetricsResponse) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetMetricsResponse. Required by controller-gen. +func (in *GetMetricsResponse) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using GetLogsRequest within kubernetes types, where deepcopy-gen is used. +func (in *GetLogsRequest) DeepCopyInto(out *GetLogsRequest) { + p := proto.Clone(in).(*GetLogsRequest) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetLogsRequest. Required by controller-gen. +func (in *GetLogsRequest) DeepCopy() *GetLogsRequest { + if in == nil { + return nil + } + out := new(GetLogsRequest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetLogsRequest. Required by controller-gen. +func (in *GetLogsRequest) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using GetLogsResponse within kubernetes types, where deepcopy-gen is used. +func (in *GetLogsResponse) DeepCopyInto(out *GetLogsResponse) { + p := proto.Clone(in).(*GetLogsResponse) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetLogsResponse. Required by controller-gen. +func (in *GetLogsResponse) DeepCopy() *GetLogsResponse { + if in == nil { + return nil + } + out := new(GetLogsResponse) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetLogsResponse. Required by controller-gen. +func (in *GetLogsResponse) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using GetTracesRequest within kubernetes types, where deepcopy-gen is used. +func (in *GetTracesRequest) DeepCopyInto(out *GetTracesRequest) { + p := proto.Clone(in).(*GetTracesRequest) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetTracesRequest. Required by controller-gen. +func (in *GetTracesRequest) DeepCopy() *GetTracesRequest { + if in == nil { + return nil + } + out := new(GetTracesRequest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetTracesRequest. Required by controller-gen. +func (in *GetTracesRequest) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using GetTracesResponse within kubernetes types, where deepcopy-gen is used. +func (in *GetTracesResponse) DeepCopyInto(out *GetTracesResponse) { + p := proto.Clone(in).(*GetTracesResponse) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetTracesResponse. Required by controller-gen. +func (in *GetTracesResponse) DeepCopy() *GetTracesResponse { + if in == nil { + return nil + } + out := new(GetTracesResponse) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GetTracesResponse. Required by controller-gen. +func (in *GetTracesResponse) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using DatasourceOptions within kubernetes types, where deepcopy-gen is used. +func (in *DatasourceOptions) DeepCopyInto(out *DatasourceOptions) { + p := proto.Clone(in).(*DatasourceOptions) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatasourceOptions. Required by controller-gen. +func (in *DatasourceOptions) DeepCopy() *DatasourceOptions { + if in == nil { + return nil + } + out := new(DatasourceOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new DatasourceOptions. Required by controller-gen. +func (in *DatasourceOptions) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using DatasourceMetrics within kubernetes types, where deepcopy-gen is used. +func (in *DatasourceMetrics) DeepCopyInto(out *DatasourceMetrics) { + p := proto.Clone(in).(*DatasourceMetrics) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatasourceMetrics. Required by controller-gen. +func (in *DatasourceMetrics) DeepCopy() *DatasourceMetrics { + if in == nil { + return nil + } + out := new(DatasourceMetrics) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new DatasourceMetrics. Required by controller-gen. +func (in *DatasourceMetrics) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using DatasourceMetricsData within kubernetes types, where deepcopy-gen is used. +func (in *DatasourceMetricsData) DeepCopyInto(out *DatasourceMetricsData) { + p := proto.Clone(in).(*DatasourceMetricsData) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatasourceMetricsData. Required by controller-gen. +func (in *DatasourceMetricsData) DeepCopy() *DatasourceMetricsData { + if in == nil { + return nil + } + out := new(DatasourceMetricsData) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new DatasourceMetricsData. Required by controller-gen. +func (in *DatasourceMetricsData) DeepCopyInterface() interface{} { + return in.DeepCopy() +} diff --git a/pkg/generated/proto/datasources_grpc.pb.go b/pkg/generated/proto/datasources_grpc.pb.go new file mode 100644 index 000000000..383795087 --- /dev/null +++ b/pkg/generated/proto/datasources_grpc.pb.go @@ -0,0 +1,245 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package proto + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// DatasourcesClient is the client API for Datasources service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DatasourcesClient interface { + GetDatasource(ctx context.Context, in *GetDatasourceRequest, opts ...grpc.CallOption) (*GetDatasourceResponse, error) + GetVariables(ctx context.Context, in *GetVariablesRequest, opts ...grpc.CallOption) (*GetVariablesResponse, error) + GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*GetMetricsResponse, error) + GetLogs(ctx context.Context, in *GetLogsRequest, opts ...grpc.CallOption) (*GetLogsResponse, error) + GetTraces(ctx context.Context, in *GetTracesRequest, opts ...grpc.CallOption) (*GetTracesResponse, error) +} + +type datasourcesClient struct { + cc grpc.ClientConnInterface +} + +func NewDatasourcesClient(cc grpc.ClientConnInterface) DatasourcesClient { + return &datasourcesClient{cc} +} + +func (c *datasourcesClient) GetDatasource(ctx context.Context, in *GetDatasourceRequest, opts ...grpc.CallOption) (*GetDatasourceResponse, error) { + out := new(GetDatasourceResponse) + err := c.cc.Invoke(ctx, "/datasources.Datasources/GetDatasource", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datasourcesClient) GetVariables(ctx context.Context, in *GetVariablesRequest, opts ...grpc.CallOption) (*GetVariablesResponse, error) { + out := new(GetVariablesResponse) + err := c.cc.Invoke(ctx, "/datasources.Datasources/GetVariables", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datasourcesClient) GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*GetMetricsResponse, error) { + out := new(GetMetricsResponse) + err := c.cc.Invoke(ctx, "/datasources.Datasources/GetMetrics", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datasourcesClient) GetLogs(ctx context.Context, in *GetLogsRequest, opts ...grpc.CallOption) (*GetLogsResponse, error) { + out := new(GetLogsResponse) + err := c.cc.Invoke(ctx, "/datasources.Datasources/GetLogs", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datasourcesClient) GetTraces(ctx context.Context, in *GetTracesRequest, opts ...grpc.CallOption) (*GetTracesResponse, error) { + out := new(GetTracesResponse) + err := c.cc.Invoke(ctx, "/datasources.Datasources/GetTraces", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// DatasourcesServer is the server API for Datasources service. +// All implementations must embed UnimplementedDatasourcesServer +// for forward compatibility +type DatasourcesServer interface { + GetDatasource(context.Context, *GetDatasourceRequest) (*GetDatasourceResponse, error) + GetVariables(context.Context, *GetVariablesRequest) (*GetVariablesResponse, error) + GetMetrics(context.Context, *GetMetricsRequest) (*GetMetricsResponse, error) + GetLogs(context.Context, *GetLogsRequest) (*GetLogsResponse, error) + GetTraces(context.Context, *GetTracesRequest) (*GetTracesResponse, error) + mustEmbedUnimplementedDatasourcesServer() +} + +// UnimplementedDatasourcesServer must be embedded to have forward compatible implementations. +type UnimplementedDatasourcesServer struct { +} + +func (UnimplementedDatasourcesServer) GetDatasource(context.Context, *GetDatasourceRequest) (*GetDatasourceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDatasource not implemented") +} +func (UnimplementedDatasourcesServer) GetVariables(context.Context, *GetVariablesRequest) (*GetVariablesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetVariables not implemented") +} +func (UnimplementedDatasourcesServer) GetMetrics(context.Context, *GetMetricsRequest) (*GetMetricsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMetrics not implemented") +} +func (UnimplementedDatasourcesServer) GetLogs(context.Context, *GetLogsRequest) (*GetLogsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLogs not implemented") +} +func (UnimplementedDatasourcesServer) GetTraces(context.Context, *GetTracesRequest) (*GetTracesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTraces not implemented") +} +func (UnimplementedDatasourcesServer) mustEmbedUnimplementedDatasourcesServer() {} + +// UnsafeDatasourcesServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DatasourcesServer will +// result in compilation errors. +type UnsafeDatasourcesServer interface { + mustEmbedUnimplementedDatasourcesServer() +} + +func RegisterDatasourcesServer(s grpc.ServiceRegistrar, srv DatasourcesServer) { + s.RegisterService(&Datasources_ServiceDesc, srv) +} + +func _Datasources_GetDatasource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDatasourceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatasourcesServer).GetDatasource(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/datasources.Datasources/GetDatasource", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatasourcesServer).GetDatasource(ctx, req.(*GetDatasourceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datasources_GetVariables_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetVariablesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatasourcesServer).GetVariables(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/datasources.Datasources/GetVariables", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatasourcesServer).GetVariables(ctx, req.(*GetVariablesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datasources_GetMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMetricsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatasourcesServer).GetMetrics(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/datasources.Datasources/GetMetrics", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatasourcesServer).GetMetrics(ctx, req.(*GetMetricsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datasources_GetLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetLogsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatasourcesServer).GetLogs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/datasources.Datasources/GetLogs", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatasourcesServer).GetLogs(ctx, req.(*GetLogsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datasources_GetTraces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTracesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatasourcesServer).GetTraces(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/datasources.Datasources/GetTraces", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatasourcesServer).GetTraces(ctx, req.(*GetTracesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Datasources_ServiceDesc is the grpc.ServiceDesc for Datasources service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Datasources_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "datasources.Datasources", + HandlerType: (*DatasourcesServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetDatasource", + Handler: _Datasources_GetDatasource_Handler, + }, + { + MethodName: "GetVariables", + Handler: _Datasources_GetVariables_Handler, + }, + { + MethodName: "GetMetrics", + Handler: _Datasources_GetMetrics_Handler, + }, + { + MethodName: "GetLogs", + Handler: _Datasources_GetLogs_Handler, + }, + { + MethodName: "GetTraces", + Handler: _Datasources_GetTraces_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "datasources.proto", +} diff --git a/proto/application.proto b/proto/application.proto new file mode 100644 index 000000000..6ced1d32f --- /dev/null +++ b/proto/application.proto @@ -0,0 +1,88 @@ +syntax = "proto3"; +package application; + +option go_package = "github.com/kobsio/kobs/pkg/generated/proto"; + +// Application is the specification for an application. This specification is also used for the Kubernetes CRD as +// ApplicationSpec. +// This is also the reason why we use istio.io/tools/cmd/protoc-gen-deepcopy within the code generation, to generate the +// deepcopy function, which are required to use the Application within a CRD. +message Application { + string cluster = 1; + string namespace = 2; + string name = 3; + repeated ApplicationLink links = 4; + repeated ApplicationResources resources = 5; + ApplicationMetrics metrics = 6; + ApplicationLogs logs = 7; + ApplicationTraces traces = 8; +} + +// ApplicationLink is the format of a link, which can be provided within an application. A link consists of a title, +// which is displayed in the frontend and the link link (title=Example, link=https://example.com). +message ApplicationLink { + string title = 1; + string link = 2; +} + +// ApplicationResources is the specification to retrieve all Kubernetes resources, which can be associated with the +// application. For that, a list of kinds (deployments, pods, statefulsets) as specified in +// app/src/components/resources/helpers.tsx and a selector must be set. Currently only label selector is supported, +// e.g. app=example. +message ApplicationResources { + repeated string kinds = 1; + string selector = 2; +} + +// ApplicationMetrics defines the structure of the metrics section of an application. It contains the name of the +// datasource, which is the same as the metrics datasource for a cluster, when the user doesn't set this field in the +// Application CR. It also contains a list of variables and charts. +// The health field can contain a single chart, which is used to display the health of an application in the +// applications overview. +message ApplicationMetrics { + string datasource = 1; + ApplicationMetricsChart health = 2; + repeated ApplicationMetricsVariable variables = 3; + repeated ApplicationMetricsChart charts = 4; +} + +// ApplicationMetricsVariable specifies a variable, which can be used within the charts. A variable must contain a name, +// a label and a query. It also can set the allowAll field to true, which will include an "All" option in the variables +// values. +// The values and value field must not be provided by the user. These fields will be set by the GetVariables call. If a +// user provide a "value", we will try to use it as the selected value. +message ApplicationMetricsVariable { + string name = 1; + string label = 2; + string query = 3; + bool allowAll = 4; + repeated string values = 5; + string value = 6; +} + +// ApplicationMetricsChart represents a chart for the metrics view. A chart must contain a title, a type (line, area, +// bar chart, etc.). It can also contain a unit for the y axis. If the stacked option is set to true all series for the +// chart will be stacked. The size parameter can be used to define the width of a chart for large screens. We are using +// a 12 column grid to display the charts, so the number must be between 1 and 12. The last option is a list of queries, +// which are executed against the datasource (e.g. For Prometheus this will be a list of PromQL queries). +message ApplicationMetricsChart { + string title = 1; + string type = 2; + string unit = 3; + bool stacked = 4; + int64 size = 5; + repeated ApplicationMetricsQuery queries = 6; +} + +// ApplicationMetricsQuery presents a single query to get the data, which should be shown in the chart for the metrics +// section. A query consists of a query string (e.g. PromQL) and a lable. The query and the label can contain variables +// via Go templating syntax (e.g. {{ .VARIABLE-NAME }}). For Prometheus the label can also contain a label from the +// returned series with the same syntax (e.g. {{ .SERIES-LABEL }}). +message ApplicationMetricsQuery { + string query = 1; + string label = 2; +} + +message ApplicationLogs {} + +message ApplicationTraces {} diff --git a/proto/applications.proto b/proto/applications.proto deleted file mode 100644 index 0ca3afcd4..000000000 --- a/proto/applications.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto3"; -package applications; - -option go_package = "github.com/kobsio/kobs/pkg/generated/proto"; - -// Application is the specification for an application. This specification is also used for the Kubernetes CRD as -// ApplicationSpec. -// This is also the reason why we use istio.io/tools/cmd/protoc-gen-deepcopy within the code generation, to generate the -// deepcopy function, which are required to use the Application within a CRD. -message Application { - string cluster = 1; - string namespace = 2; - string name = 3; - repeated ApplicationLink links = 4; - repeated ApplicationResources resources = 5; -} - -// ApplicationLink is the format of a link, which can be provided within an application. A link consists of a title, -// which is displayed in the frontend and the link link (title=Example, link=https://example.com). -message ApplicationLink { - string title = 1; - string link = 2; -} - -// ApplicationResources is the specification to retrieve all Kubernetes resources, which can be associated with the -// application. For that, a list of kinds (deployments, pods, statefulsets) as specified in -// app/src/components/resources/helpers.tsx and a selector must be set. Currently only label selector is supported, -// e.g. app=example. -message ApplicationResources { - repeated string kinds = 1; - string selector = 2; -} diff --git a/proto/clusters.proto b/proto/clusters.proto index 827906391..7e19cceca 100644 --- a/proto/clusters.proto +++ b/proto/clusters.proto @@ -3,7 +3,7 @@ package clusters; option go_package = "github.com/kobsio/kobs/pkg/generated/proto"; -import "applications.proto"; +import "application.proto"; // Clusters is the service to execute requests against all loaded Kubernetes clusters. The service can be used to get // all clusters, the namespaces for clusters and various Kubernetes resources. @@ -71,7 +71,7 @@ message GetApplicationsRequest { // GetApplicationsResponse is the response for a GetApplications request, which returns a list of applications. message GetApplicationsResponse { - repeated applications.Application applications = 1; + repeated application.Application applications = 1; } // GetApplicationRequest is the format to get a single application. Each application can be identified by the cluster, @@ -84,5 +84,5 @@ message GetApplicationRequest { // GetApplicationResponse is the response for a GetApplication request, which returns a single application. message GetApplicationResponse { - applications.Application application = 1; + application.Application application = 1; } diff --git a/proto/datasources.proto b/proto/datasources.proto new file mode 100644 index 000000000..75a1daa52 --- /dev/null +++ b/proto/datasources.proto @@ -0,0 +1,101 @@ +syntax = "proto3"; +package datasources; + +option go_package = "github.com/kobsio/kobs/pkg/generated/proto"; + +import "application.proto"; + +// Datasources implements the service for all datasource related requests. The service provides some general functions, +// like returning the type of a datasource for a given name. The service is also responsible for the implementation of +// the datasource specific functions. +service Datasources { + rpc GetDatasource(GetDatasourceRequest) returns (GetDatasourceResponse) {} + rpc GetVariables(GetVariablesRequest) returns (GetVariablesResponse) {} + rpc GetMetrics(GetMetricsRequest) returns (GetMetricsResponse) {} + rpc GetLogs(GetLogsRequest) returns (GetLogsResponse) {} + rpc GetTraces(GetTracesRequest) returns (GetTracesResponse) {} +} + +// GetDatasourceRequest is the request message to get the type of a datasource. Each datasource can be identified by +// it's name, so that only the name is required in this request. +message GetDatasourceRequest { + string name = 1; +} + +// GetDatasourceResponse is the response for a GetDatasource request. At the moment this only returns the type of the, +// datasource, but it can be extended later with other properties for a datasource. +// This request should never return any confidential properties of a datasource like username / password, which is +// required for the authentication against the datasource. +message GetDatasourceResponse { + string name = 1; + string type = 2; +} + +// GetVariablesRequest is the request data needed to get all variables for the metrics view of an application. The +// request contains various options for the datasource (like start/end time) and the variables of an application. It +// also contains the name of the datasource, which should be used. +message GetVariablesRequest { + string name = 1; + DatasourceOptions options = 2; + repeated application.ApplicationMetricsVariable variables = 3; +} + +// GetVariablesResponse is the response for a GetVariables request, it contains the variables of the application, with +// the values and value field. +message GetVariablesResponse { + repeated application.ApplicationMetricsVariable variables = 1; +} + +// GetMetricsRequest is the structure of a call to get a time series for a chart. It must contain the name of the +// datasource, options like the start/end time and the user defined queries for the chart. +message GetMetricsRequest { + string name = 1; + DatasourceOptions options = 2; + repeated application.ApplicationMetricsVariable variables = 3; + repeated application.ApplicationMetricsQuery queries = 4; +} + +// GetMetricsResponse is the response for a GetMetrics request. It contains the data needed to render the chart in the +// React UI. +message GetMetricsResponse { + repeated DatasourceMetrics metrics = 1; +} + +message GetLogsRequest { + string name = 1; + DatasourceOptions options = 2; +} + +message GetLogsResponse {} + +message GetTracesRequest { + string name = 1; + DatasourceOptions options = 2; +} + +message GetTracesResponse {} + +// DatasourceOptions contains various options, which are need to get metrics, logs and traces across different +// datasources. These can be general options like start time, end time and datasource specific options like the +// resolution for Prometheus series. +message DatasourceOptions { + int64 timeStart = 1; + int64 timeEnd = 2; + string resolution = 3; +} + +// DatasourceMetrics contains the label and all data points for a metric. It also contains the minimum and maximum value +// of all data points. +message DatasourceMetrics { + string label = 1; + double min = 2; + double max = 3; + repeated DatasourceMetricsData data = 4; +} + +// DatasourceMetricsData is one data point for a metric. Each data point contains a timestamp and a value, where x is +// the timestamp and y is the value. +message DatasourceMetricsData { + int64 x = 1; + double y = 2; +}