{"version":3,"file":"cloudMonitoringPlugin.da7f7f4277f6ded7625e.js","mappings":"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","sources":["webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/CloudMonitoringCheatSheet.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/ConfigEditor/ConfigEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/VariableQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AnnotationQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/CloudMonitoringMetricFindQuery.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/variables.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/datasource.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/annotationSupport.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/module.ts"],"sourcesContent":["import { css } from '@emotion/css';\nimport React, { PureComponent } from 'react';\n\nimport { QueryEditorHelpProps } from '@grafana/data';\n\nimport { CloudMonitoringQuery } from '../types';\n\nexport default class CloudMonitoringCheatSheet extends PureComponent<\n QueryEditorHelpProps,\n { userExamples: string[] }\n> {\n render() {\n return (\n
\n

Cloud Monitoring alias patterns

\n
\n

\n Format the legend keys any way you want by using alias patterns. Format the legend keys any way you want by\n using alias patterns.\n

\n Example:\n {`${'{{metric.name}} - {{metric.label.instance_name}}'}`}\n
\n Result:   cpu/usage_time - server1-europe-west-1\n
\n
\n \n
\n \n
  • \n {`${'{{metric.type}}'}`} = metric type e.g. compute.googleapis.com/instance/cpu/usage_time\n
  • \n
  • \n {`${'{{metric.name}}'}`} = name part of metric e.g. instance/cpu/usage_time\n
  • \n
  • \n {`${'{{metric.service}}'}`} = service part of metric e.g. compute\n
  • \n
  • \n {`${'{{metric.label.label_name}}'}`} = Metric label metadata e.g. metric.label.instance_name\n
  • \n
  • \n {`${'{{resource.label.label_name}}'}`} = Resource label metadata e.g. resource.label.zone\n
  • \n
  • \n {`${'{{metadata.system_labels.name}}'}`} = Meta data system labels e.g.\n metadata.system_labels.name. For this to work, the needs to be included in the group by\n
  • \n
  • \n {`${'{{metadata.user_labels.name}}'}`} = Meta data user labels e.g.\n metadata.user_labels.name. For this to work, the needs to be included in the group by\n
  • \n
  • \n {`${'{{bucket}}'}`} = bucket boundary for distribution metrics when using a heatmap in\n Grafana\n
  • \n
  • \n {`${'{{project}}'}`} = The project name that was specified in the query editor\n
  • \n
  • \n {`${'{{service}}'}`} = The service id that was specified in the SLO query editor\n
  • \n
  • \n {`${'{{slo}}'}`} = The SLO id that was specified in the SLO query editor\n
  • \n
  • \n {`${'{{selector}}'}`} = The Selector function that was specified in the SLO query editor\n
  • \n \n
    \n
    \n );\n }\n}\n","import React, { PureComponent } from 'react';\n\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { ConnectionConfig } from '@grafana/google-sdk';\n\nimport { CloudMonitoringOptions, CloudMonitoringSecureJsonData } from '../../types';\n\nexport type Props = DataSourcePluginOptionsEditorProps;\n\nexport class ConfigEditor extends PureComponent {\n render() {\n return (\n <>\n \n \n );\n }\n}\n","import React, { PureComponent } from 'react';\n\nimport { QueryEditorProps } from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { extractServicesFromMetricDescriptors, getLabelKeys, getMetricTypes } from '../functions';\nimport {\n CloudMonitoringOptions,\n CloudMonitoringQuery,\n CloudMonitoringVariableQuery,\n MetricDescriptor,\n MetricFindQueryTypes,\n VariableQueryData,\n} from '../types';\n\nimport { VariableQueryField } from './';\n\nexport type Props = QueryEditorProps<\n CloudMonitoringDatasource,\n CloudMonitoringQuery,\n CloudMonitoringOptions,\n CloudMonitoringVariableQuery\n>;\n\nexport class CloudMonitoringVariableQueryEditor extends PureComponent {\n queryTypes: Array<{ value: string; label: string }> = [\n { value: MetricFindQueryTypes.Projects, label: 'Projects' },\n { value: MetricFindQueryTypes.Services, label: 'Services' },\n { value: MetricFindQueryTypes.MetricTypes, label: 'Metric Types' },\n { value: MetricFindQueryTypes.LabelKeys, label: 'Label Keys' },\n { value: MetricFindQueryTypes.LabelValues, label: 'Label Values' },\n { value: MetricFindQueryTypes.ResourceTypes, label: 'Resource Types' },\n { value: MetricFindQueryTypes.Aggregations, label: 'Aggregations' },\n { value: MetricFindQueryTypes.Aligners, label: 'Aligners' },\n { value: MetricFindQueryTypes.AlignmentPeriods, label: 'Alignment Periods' },\n { value: MetricFindQueryTypes.Selectors, label: 'Selectors' },\n { value: MetricFindQueryTypes.SLOServices, label: 'SLO Services' },\n { value: MetricFindQueryTypes.SLO, label: 'Service Level Objectives (SLO)' },\n ];\n\n defaults: VariableQueryData = {\n selectedQueryType: this.queryTypes[0].value,\n metricDescriptors: [],\n selectedService: '',\n selectedMetricType: '',\n labels: [],\n labelKey: '',\n metricTypes: [],\n services: [],\n sloServices: [],\n selectedSLOService: '',\n projects: [],\n projectName: '',\n loading: true,\n };\n\n constructor(props: Props) {\n super(props);\n this.state = Object.assign(\n this.defaults,\n { projectName: this.props.datasource.getDefaultProject() },\n this.props.query\n );\n }\n\n async componentDidMount() {\n const projects = (await this.props.datasource.getProjects()) as MetricDescriptor[];\n const metricDescriptors = await this.props.datasource.getMetricTypes(\n this.props.query.projectName || this.props.datasource.getDefaultProject()\n );\n const services = extractServicesFromMetricDescriptors(metricDescriptors).map((m: any) => ({\n value: m.service,\n label: m.serviceShortName,\n }));\n\n let selectedService = '';\n if (services.some((s) => s.value === getTemplateSrv().replace(this.state.selectedService))) {\n selectedService = this.state.selectedService;\n } else if (services && services.length > 0) {\n selectedService = services[0].value;\n }\n\n const { metricTypes, selectedMetricType } = getMetricTypes(\n metricDescriptors,\n this.state.selectedMetricType,\n getTemplateSrv().replace(this.state.selectedMetricType),\n getTemplateSrv().replace(selectedService)\n );\n\n const sloServices = await this.props.datasource.getSLOServices(this.state.projectName);\n\n const state: any = {\n services,\n selectedService,\n metricTypes,\n selectedMetricType,\n metricDescriptors,\n projects,\n ...(await this.getLabels(selectedMetricType, this.state.projectName)),\n sloServices,\n loading: false,\n };\n this.setState(state, () => this.onPropsChange());\n }\n\n onPropsChange = () => {\n const { metricDescriptors, labels, metricTypes, services, ...queryModel } = this.state;\n this.props.onChange({ ...queryModel, refId: 'CloudMonitoringVariableQueryEditor-VariableQuery' });\n };\n\n async onQueryTypeChange(queryType: string) {\n const state: any = {\n selectedQueryType: queryType,\n ...(await this.getLabels(this.state.selectedMetricType, this.state.projectName, queryType)),\n };\n\n this.setState(state);\n }\n\n async onProjectChange(projectName: string) {\n const metricDescriptors = await this.props.datasource.getMetricTypes(projectName);\n const labels = await this.getLabels(this.state.selectedMetricType, projectName);\n const { metricTypes, selectedMetricType } = getMetricTypes(\n metricDescriptors,\n this.state.selectedMetricType,\n getTemplateSrv().replace(this.state.selectedMetricType),\n getTemplateSrv().replace(this.state.selectedService)\n );\n\n const sloServices = await this.props.datasource.getSLOServices(projectName);\n\n this.setState(\n {\n ...labels,\n metricTypes,\n selectedMetricType,\n metricDescriptors,\n projectName,\n sloServices,\n },\n () => this.onPropsChange()\n );\n }\n\n async onServiceChange(service: string) {\n const { metricTypes, selectedMetricType } = getMetricTypes(\n this.state.metricDescriptors,\n this.state.selectedMetricType,\n getTemplateSrv().replace(this.state.selectedMetricType),\n getTemplateSrv().replace(service)\n );\n const state: any = {\n selectedService: service,\n metricTypes,\n selectedMetricType,\n ...(await this.getLabels(selectedMetricType, this.state.projectName)),\n };\n this.setState(state, () => this.onPropsChange());\n }\n\n async onMetricTypeChange(metricType: string) {\n const state: any = {\n selectedMetricType: metricType,\n ...(await this.getLabels(metricType, this.state.projectName)),\n };\n this.setState(state, () => this.onPropsChange());\n }\n\n onLabelKeyChange(labelKey: string) {\n this.setState({ labelKey }, () => this.onPropsChange());\n }\n\n componentDidUpdate(prevProps: Readonly, prevState: Readonly) {\n const selecQueryTypeChanged = prevState.selectedQueryType !== this.state.selectedQueryType;\n const selectSLOServiceChanged = this.state.selectedSLOService !== prevState.selectedSLOService;\n if (selecQueryTypeChanged || selectSLOServiceChanged) {\n this.onPropsChange();\n }\n }\n\n async getLabels(selectedMetricType: string, projectName: string, selectedQueryType = this.state.selectedQueryType) {\n let result = { labels: this.state.labels, labelKey: this.state.labelKey };\n if (selectedMetricType && selectedQueryType === MetricFindQueryTypes.LabelValues) {\n const labels = await getLabelKeys(this.props.datasource, selectedMetricType, projectName);\n const labelKey = labels.some((l) => l === getTemplateSrv().replace(this.state.labelKey))\n ? this.state.labelKey\n : labels[0];\n result = { labels, labelKey };\n }\n return result;\n }\n\n renderQueryTypeSwitch(queryType: string) {\n const variableOptionGroup = {\n label: 'Template Variables',\n expanded: false,\n options: getTemplateSrv()\n .getVariables()\n .map((v: any) => ({\n value: `$${v.name}`,\n label: `$${v.name}`,\n })),\n };\n\n switch (queryType) {\n case MetricFindQueryTypes.MetricTypes:\n return (\n <>\n this.onProjectChange(value)}\n label=\"Project\"\n />\n this.onServiceChange(value)}\n label=\"Service\"\n />\n \n );\n case MetricFindQueryTypes.LabelKeys:\n case MetricFindQueryTypes.LabelValues:\n case MetricFindQueryTypes.ResourceTypes:\n return (\n <>\n this.onProjectChange(value)}\n label=\"Project\"\n />\n this.onServiceChange(value)}\n label=\"Service\"\n />\n ({ value, label: name })),\n ]}\n onChange={(value) => this.onMetricTypeChange(value)}\n label=\"Metric Type\"\n />\n {queryType === MetricFindQueryTypes.LabelValues && (\n ({ value: l, label: l }))]}\n onChange={(value) => this.onLabelKeyChange(value)}\n label=\"Label Key\"\n />\n )}\n \n );\n case MetricFindQueryTypes.Aligners:\n case MetricFindQueryTypes.Aggregations:\n return (\n <>\n this.onServiceChange(value)}\n label=\"Service\"\n />\n ({ value, label: name })),\n ]}\n onChange={(value) => this.onMetricTypeChange(value)}\n label=\"Metric Type\"\n />\n \n );\n case MetricFindQueryTypes.SLOServices:\n return (\n <>\n this.onProjectChange(value)}\n label=\"Project\"\n />\n \n );\n\n case MetricFindQueryTypes.SLO:\n return (\n <>\n this.onProjectChange(value)}\n label=\"Project\"\n />\n {\n this.setState({\n ...this.state,\n selectedSLOService: value,\n });\n }}\n label=\"SLO Service\"\n />\n \n );\n default:\n return '';\n }\n }\n\n render() {\n if (this.state.loading) {\n return (\n
    \n Query Type\n
    \n \n
    \n
    \n );\n }\n\n return (\n <>\n this.onQueryTypeChange(value)}\n label=\"Query Type\"\n />\n {this.renderQueryTypeSwitch(this.state.selectedQueryType)}\n \n );\n }\n}\n","import React, { useState } from 'react';\nimport { useDebounce } from 'react-use';\n\nimport { QueryEditorProps, toOption } from '@grafana/data';\nimport { Input } from '@grafana/ui';\n\nimport { INPUT_WIDTH } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport {\n EditorMode,\n MetricKind,\n AnnotationMetricQuery,\n CloudMonitoringOptions,\n CloudMonitoringQuery,\n AlignmentTypes,\n} from '../types';\n\nimport { MetricQueryEditor } from './MetricQueryEditor';\n\nimport { AnnotationsHelp, QueryEditorRow } from './';\n\nexport type Props = QueryEditorProps;\n\nexport const defaultQuery: (datasource: CloudMonitoringDatasource) => AnnotationMetricQuery = (datasource) => ({\n editorMode: EditorMode.Visual,\n projectName: datasource.getDefaultProject(),\n projects: [],\n metricType: '',\n filters: [],\n metricKind: MetricKind.GAUGE,\n valueType: '',\n refId: 'annotationQuery',\n title: '',\n text: '',\n labels: {},\n variableOptionGroup: {},\n variableOptions: [],\n query: '',\n crossSeriesReducer: 'REDUCE_NONE',\n perSeriesAligner: AlignmentTypes.ALIGN_NONE,\n alignmentPeriod: 'grafana-auto',\n});\n\nexport const AnnotationQueryEditor = (props: Props) => {\n const { datasource, query, onRunQuery, data, onChange } = props;\n const meta = data?.series.length ? data?.series[0].meta : {};\n const customMetaData = meta?.custom ?? {};\n const metricQuery = { ...defaultQuery(datasource), ...query.metricQuery };\n const [title, setTitle] = useState(metricQuery.title || '');\n const [text, setText] = useState(metricQuery.text || '');\n const variableOptionGroup = {\n label: 'Template Variables',\n options: datasource.getVariables().map(toOption),\n };\n\n const handleQueryChange = (metricQuery: AnnotationMetricQuery) => onChange({ ...query, metricQuery });\n const handleTitleChange = (e: React.ChangeEvent) => {\n setTitle(e.target.value);\n };\n const handleTextChange = (e: React.ChangeEvent) => {\n setText(e.target.value);\n };\n\n useDebounce(\n () => {\n onChange({ ...query, metricQuery: { ...metricQuery, title } });\n },\n 1000,\n [title, onChange]\n );\n useDebounce(\n () => {\n onChange({ ...query, metricQuery: { ...metricQuery, text } });\n },\n 1000,\n [text, onChange]\n );\n\n return (\n <>\n \n\n \n \n \n\n \n \n \n\n \n \n );\n};\n","import { isString } from 'lodash';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { ALIGNMENT_PERIODS, SELECTORS } from './constants';\nimport CloudMonitoringDatasource from './datasource';\nimport {\n extractServicesFromMetricDescriptors,\n getAggregationOptionsByMetric,\n getAlignmentOptionsByMetric,\n getLabelKeys,\n getMetricTypesByService,\n} from './functions';\nimport { CloudMonitoringVariableQuery, MetricDescriptor, MetricFindQueryTypes, MetricKind, ValueTypes } from './types';\n\nexport default class CloudMonitoringMetricFindQuery {\n constructor(private datasource: CloudMonitoringDatasource) {}\n\n async execute(query: CloudMonitoringVariableQuery) {\n try {\n if (!query.projectName) {\n query.projectName = this.datasource.getDefaultProject();\n }\n\n switch (query.selectedQueryType) {\n case MetricFindQueryTypes.Projects:\n return this.handleProjectsQuery();\n case MetricFindQueryTypes.Services:\n return this.handleServiceQuery(query);\n case MetricFindQueryTypes.MetricTypes:\n return this.handleMetricTypesQuery(query);\n case MetricFindQueryTypes.LabelKeys:\n return this.handleLabelKeysQuery(query);\n case MetricFindQueryTypes.LabelValues:\n return this.handleLabelValuesQuery(query);\n case MetricFindQueryTypes.ResourceTypes:\n return this.handleResourceTypeQuery(query);\n case MetricFindQueryTypes.Aligners:\n return this.handleAlignersQuery(query);\n case MetricFindQueryTypes.AlignmentPeriods:\n return this.handleAlignmentPeriodQuery();\n case MetricFindQueryTypes.Aggregations:\n return this.handleAggregationQuery(query);\n case MetricFindQueryTypes.SLOServices:\n return this.handleSLOServicesQuery(query);\n case MetricFindQueryTypes.SLO:\n return this.handleSLOQuery(query);\n case MetricFindQueryTypes.Selectors:\n return this.handleSelectorQuery();\n default:\n return [];\n }\n } catch (error) {\n console.error(`Could not run CloudMonitoringMetricFindQuery ${query}`, error);\n return [];\n }\n }\n\n async handleProjectsQuery() {\n const projects = await this.datasource.getProjects();\n return (projects as SelectableValue).map((s: { label: string; value: string }) => ({\n text: s.label,\n value: s.value,\n expandable: true,\n }));\n }\n\n async handleServiceQuery({ projectName }: CloudMonitoringVariableQuery) {\n const metricDescriptors = await this.datasource.getMetricTypes(projectName);\n const services: MetricDescriptor[] = extractServicesFromMetricDescriptors(metricDescriptors);\n return services.map((s) => ({\n text: s.serviceShortName,\n value: s.service,\n expandable: true,\n }));\n }\n\n async handleMetricTypesQuery({ selectedService, projectName }: CloudMonitoringVariableQuery) {\n if (!selectedService) {\n return [];\n }\n const metricDescriptors = await this.datasource.getMetricTypes(projectName);\n return getMetricTypesByService(metricDescriptors, this.datasource.templateSrv.replace(selectedService)).map(\n (s) => ({\n text: s.displayName,\n value: s.type,\n expandable: true,\n })\n );\n }\n\n async handleLabelKeysQuery({ selectedMetricType, projectName }: CloudMonitoringVariableQuery) {\n if (!selectedMetricType) {\n return [];\n }\n const labelKeys = await getLabelKeys(this.datasource, selectedMetricType, projectName);\n return labelKeys.map(this.toFindQueryResult);\n }\n\n async handleLabelValuesQuery({ selectedMetricType, labelKey, projectName }: CloudMonitoringVariableQuery) {\n if (!selectedMetricType) {\n return [];\n }\n const refId = 'handleLabelValuesQuery';\n // REDUCE_MEAN is needed so the groupBy is not ignored\n const labels = await this.datasource.getLabels(selectedMetricType, refId, projectName, {\n groupBys: [labelKey],\n crossSeriesReducer: 'REDUCE_MEAN',\n });\n const interpolatedKey = this.datasource.templateSrv.replace(labelKey);\n const values = labels.hasOwnProperty(interpolatedKey) ? labels[interpolatedKey] : [];\n return values.map(this.toFindQueryResult);\n }\n\n async handleResourceTypeQuery({ selectedMetricType, projectName }: CloudMonitoringVariableQuery) {\n if (!selectedMetricType) {\n return [];\n }\n const refId = 'handleResourceTypeQueryQueryType';\n const labels = await this.datasource.getLabels(selectedMetricType, refId, projectName);\n return labels['resource.type']?.map(this.toFindQueryResult) ?? [];\n }\n\n async handleAlignersQuery({ selectedMetricType, projectName }: CloudMonitoringVariableQuery) {\n if (!selectedMetricType) {\n return [];\n }\n const metricDescriptors = await this.datasource.getMetricTypes(projectName);\n const descriptor = metricDescriptors.find(\n (m) => m.type === this.datasource.templateSrv.replace(selectedMetricType)\n );\n\n if (!descriptor) {\n return [];\n }\n\n return getAlignmentOptionsByMetric(descriptor.valueType, descriptor.metricKind).map(this.toFindQueryResult);\n }\n\n async handleAggregationQuery({ selectedMetricType, projectName }: CloudMonitoringVariableQuery) {\n if (!selectedMetricType) {\n return [];\n }\n\n const metricDescriptors = await this.datasource.getMetricTypes(projectName);\n const descriptor = metricDescriptors.find(\n (m) => m.type === this.datasource.templateSrv.replace(selectedMetricType)\n );\n\n if (!descriptor) {\n return [];\n }\n\n return getAggregationOptionsByMetric(descriptor.valueType as ValueTypes, descriptor.metricKind as MetricKind).map(\n this.toFindQueryResult\n );\n }\n\n async handleSLOServicesQuery({ projectName }: CloudMonitoringVariableQuery) {\n const services = await this.datasource.getSLOServices(projectName);\n return services.map(this.toFindQueryResult);\n }\n\n async handleSLOQuery({ selectedSLOService, projectName }: CloudMonitoringVariableQuery) {\n const slos = await this.datasource.getServiceLevelObjectives(projectName, selectedSLOService);\n return slos.map(this.toFindQueryResult);\n }\n\n async handleSelectorQuery() {\n return SELECTORS.map(this.toFindQueryResult);\n }\n\n handleAlignmentPeriodQuery() {\n return ALIGNMENT_PERIODS.map(this.toFindQueryResult);\n }\n\n toFindQueryResult(x: any) {\n return isString(x) ? { text: x, expandable: true } : { ...x, expandable: true };\n }\n}\n","import { from, Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport { CustomVariableSupport, DataQueryRequest, DataQueryResponse } from '@grafana/data';\n\nimport CloudMonitoringMetricFindQuery from './CloudMonitoringMetricFindQuery';\nimport { CloudMonitoringVariableQueryEditor } from './components/VariableQueryEditor';\nimport CloudMonitoringDatasource from './datasource';\nimport { CloudMonitoringVariableQuery } from './types';\n\nexport class CloudMonitoringVariableSupport extends CustomVariableSupport<\n CloudMonitoringDatasource,\n CloudMonitoringVariableQuery\n> {\n private readonly metricFindQuery: CloudMonitoringMetricFindQuery;\n\n constructor(private readonly datasource: CloudMonitoringDatasource) {\n super();\n this.metricFindQuery = new CloudMonitoringMetricFindQuery(datasource);\n this.query = this.query.bind(this);\n }\n\n editor = CloudMonitoringVariableQueryEditor;\n\n query(request: DataQueryRequest): Observable {\n const executeObservable = from(this.metricFindQuery.execute(request.targets[0]));\n return from(this.datasource.ensureGCEDefaultProject()).pipe(\n mergeMap(() => executeObservable),\n map((data) => ({ data }))\n );\n }\n}\n","import { chunk, flatten, isString, isArray } from 'lodash';\nimport { from, lastValueFrom, Observable, of } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport {\n DataQueryRequest,\n DataQueryResponse,\n DataSourceInstanceSettings,\n ScopedVars,\n SelectableValue,\n} from '@grafana/data';\nimport { DataSourceWithBackend, getBackendSrv, toDataQueryResponse } from '@grafana/runtime';\nimport { getTimeSrv, TimeSrv } from 'app/features/dashboard/services/TimeSrv';\nimport { getTemplateSrv, TemplateSrv } from 'app/features/templating/template_srv';\n\nimport { CloudMonitoringAnnotationSupport } from './annotationSupport';\nimport {\n CloudMonitoringOptions,\n CloudMonitoringQuery,\n EditorMode,\n Filter,\n MetricDescriptor,\n QueryType,\n PostResponse,\n Aggregation,\n} from './types';\nimport { CloudMonitoringVariableSupport } from './variables';\n\nexport default class CloudMonitoringDatasource extends DataSourceWithBackend<\n CloudMonitoringQuery,\n CloudMonitoringOptions\n> {\n authenticationType: string;\n intervalMs: number;\n\n constructor(\n private instanceSettings: DataSourceInstanceSettings,\n public templateSrv: TemplateSrv = getTemplateSrv(),\n private readonly timeSrv: TimeSrv = getTimeSrv()\n ) {\n super(instanceSettings);\n this.authenticationType = instanceSettings.jsonData.authenticationType || 'jwt';\n this.variables = new CloudMonitoringVariableSupport(this);\n this.intervalMs = 0;\n this.annotations = CloudMonitoringAnnotationSupport(this);\n }\n\n getVariables() {\n return this.templateSrv.getVariables().map((v) => `$${v.name}`);\n }\n\n query(request: DataQueryRequest): Observable {\n request.targets = request.targets.map((t) => ({\n ...this.migrateQuery(t),\n intervalMs: request.intervalMs,\n }));\n return super.query(request);\n }\n\n applyTemplateVariables(\n { metricQuery, refId, queryType, sloQuery, type = 'timeSeriesQuery' }: CloudMonitoringQuery,\n scopedVars: ScopedVars\n ): Record {\n return {\n datasource: this.getRef(),\n refId,\n intervalMs: this.intervalMs,\n type,\n queryType,\n metricQuery: {\n ...this.interpolateProps(metricQuery, scopedVars),\n projectName: this.templateSrv.replace(\n metricQuery.projectName ? metricQuery.projectName : this.getDefaultProject(),\n scopedVars\n ),\n filters: this.interpolateFilters(metricQuery.filters || [], scopedVars),\n groupBys: this.interpolateGroupBys(metricQuery.groupBys || [], scopedVars),\n view: metricQuery.view || 'FULL',\n editorMode: metricQuery.editorMode,\n },\n sloQuery: sloQuery && this.interpolateProps(sloQuery, scopedVars),\n };\n }\n\n async getLabels(metricType: string, refId: string, projectName: string, aggregation?: Aggregation) {\n const options = {\n targets: [\n {\n refId,\n datasource: this.getRef(),\n queryType: QueryType.METRICS,\n metricQuery: {\n projectName: this.templateSrv.replace(projectName),\n metricType: this.templateSrv.replace(metricType),\n groupBys: this.interpolateGroupBys(aggregation?.groupBys || [], {}),\n crossSeriesReducer: aggregation?.crossSeriesReducer ?? 'REDUCE_NONE',\n view: 'HEADERS',\n },\n },\n ],\n range: this.timeSrv.timeRange(),\n } as DataQueryRequest;\n\n const queries = options.targets;\n\n if (!queries.length) {\n return lastValueFrom(of({ results: [] }));\n }\n\n return lastValueFrom(\n from(this.ensureGCEDefaultProject()).pipe(\n mergeMap(() => {\n return getBackendSrv().fetch({\n url: '/api/ds/query',\n method: 'POST',\n data: {\n from: options.range.from.valueOf().toString(),\n to: options.range.to.valueOf().toString(),\n queries,\n },\n });\n }),\n map(({ data }) => {\n const dataQueryResponse = toDataQueryResponse({\n data: data,\n });\n const labels = dataQueryResponse?.data\n .map((f) => f.meta?.custom?.labels)\n .filter((p) => !!p)\n .reduce((acc, labels) => {\n for (let key in labels) {\n if (!acc[key]) {\n acc[key] = new Set();\n }\n if (labels[key]) {\n acc[key].add(labels[key]);\n }\n }\n return acc;\n }, {});\n return Object.fromEntries(\n Object.entries(labels).map((l: any) => {\n l[1] = Array.from(l[1]);\n return l;\n })\n );\n })\n )\n );\n }\n\n async getGCEDefaultProject() {\n return this.getResource(`gceDefaultProject`);\n }\n\n getDefaultProject(): string {\n const { defaultProject, authenticationType, gceDefaultProject } = this.instanceSettings.jsonData;\n if (authenticationType === 'gce') {\n return gceDefaultProject || '';\n }\n\n return defaultProject || '';\n }\n\n async ensureGCEDefaultProject() {\n const { authenticationType, gceDefaultProject } = this.instanceSettings.jsonData;\n if (authenticationType === 'gce' && !gceDefaultProject) {\n this.instanceSettings.jsonData.gceDefaultProject = await this.getGCEDefaultProject();\n }\n }\n\n async getMetricTypes(projectName: string): Promise {\n if (!projectName) {\n return [];\n }\n\n return this.getResource(\n `metricDescriptors/v3/projects/${this.templateSrv.replace(projectName)}/metricDescriptors`\n ) as Promise;\n }\n\n async getSLOServices(projectName: string): Promise>> {\n return this.getResource(`services/v3/projects/${this.templateSrv.replace(projectName)}/services?pageSize=1000`);\n }\n\n async getServiceLevelObjectives(projectName: string, serviceId: string): Promise>> {\n if (!serviceId) {\n return Promise.resolve([]);\n }\n let { projectName: p, serviceId: s } = this.interpolateProps({ projectName, serviceId });\n return this.getResource(`slo-services/v3/projects/${p}/services/${s}/serviceLevelObjectives`);\n }\n\n getProjects(): Promise>> {\n return this.getResource(`projects`);\n }\n\n migrateQuery(query: CloudMonitoringQuery): CloudMonitoringQuery {\n if (!query.hasOwnProperty('metricQuery')) {\n const { hide, refId, datasource, key, queryType, maxLines, metric, intervalMs, type, ...rest } = query as any;\n return {\n refId,\n intervalMs,\n type,\n hide,\n queryType: QueryType.METRICS,\n metricQuery: {\n ...rest,\n view: rest.view || 'FULL',\n },\n };\n }\n return query;\n }\n\n interpolateProps>(object: T, scopedVars: ScopedVars = {}): T {\n return Object.entries(object).reduce((acc, [key, value]) => {\n return {\n ...acc,\n [key]: value && isString(value) ? this.templateSrv.replace(value, scopedVars) : value,\n };\n }, {} as T);\n }\n\n filterQuery(query: CloudMonitoringQuery): boolean {\n if (query.hide) {\n return false;\n }\n\n if (query.queryType && query.queryType === QueryType.SLO && query.sloQuery) {\n const { selectorName, serviceId, sloId, projectName } = query.sloQuery;\n return !!selectorName && !!serviceId && !!sloId && !!projectName;\n }\n\n if (query.queryType && query.queryType === QueryType.METRICS && query.metricQuery.editorMode === EditorMode.MQL) {\n return !!query.metricQuery.projectName && !!query.metricQuery.query;\n }\n\n const { metricType } = query.metricQuery;\n\n return !!metricType;\n }\n\n interpolateVariablesInQueries(queries: CloudMonitoringQuery[], scopedVars: ScopedVars): CloudMonitoringQuery[] {\n return queries.map(\n (query) => this.applyTemplateVariables(this.migrateQuery(query), scopedVars) as CloudMonitoringQuery\n );\n }\n\n interpolateFilters(filters: string[], scopedVars: ScopedVars) {\n const completeFilter: Filter[] = chunk(filters, 4)\n .map(([key, operator, value, condition]) => ({\n key,\n operator,\n value,\n ...(condition && { condition }),\n }))\n .filter((item) => item.value);\n\n const filterArray = flatten(\n completeFilter.map(({ key, operator, value, condition }: Filter) => [\n this.templateSrv.replace(key, scopedVars || {}),\n operator,\n this.templateSrv.replace(value, scopedVars || {}, (value: string | string[]) => {\n return isArray(value) && value.length ? `(${value.join('|')})` : value;\n }),\n ...(condition ? [condition] : []),\n ])\n );\n\n return filterArray || [];\n }\n\n interpolateGroupBys(groupBys: string[], scopedVars: {}): string[] {\n let interpolatedGroupBys: string[] = [];\n (groupBys || []).forEach((gb) => {\n const interpolated = this.templateSrv.replace(gb, scopedVars || {}, 'csv').split(',');\n if (Array.isArray(interpolated)) {\n interpolatedGroupBys = interpolatedGroupBys.concat(interpolated);\n } else {\n interpolatedGroupBys.push(interpolated);\n }\n });\n return interpolatedGroupBys;\n }\n}\n","import { AnnotationSupport, AnnotationQuery } from '@grafana/data';\n\nimport { AnnotationQueryEditor } from './components/AnnotationQueryEditor';\nimport CloudMonitoringDatasource from './datasource';\nimport {\n AlignmentTypes,\n CloudMonitoringQuery,\n EditorMode,\n LegacyCloudMonitoringAnnotationQuery,\n MetricKind,\n QueryType,\n} from './types';\n\n// The legacy query format sets the title and text values to empty strings by default.\n// If the title or text is not undefined at the top-level of the annotation target,\n// then it is a legacy query.\nconst isLegacyCloudMonitoringAnnotation = (\n query: unknown\n): query is AnnotationQuery =>\n (query as AnnotationQuery).target?.title !== undefined ||\n (query as AnnotationQuery).target?.text !== undefined;\n\nexport const CloudMonitoringAnnotationSupport: (\n ds: CloudMonitoringDatasource\n) => AnnotationSupport = (ds: CloudMonitoringDatasource) => {\n return {\n prepareAnnotation: (\n query: AnnotationQuery | AnnotationQuery\n ): AnnotationQuery => {\n if (!isLegacyCloudMonitoringAnnotation(query)) {\n return query;\n }\n\n const { enable, name, iconColor } = query;\n const { target } = query;\n const result: AnnotationQuery = {\n datasource: query.datasource,\n enable,\n name,\n iconColor,\n target: {\n intervalMs: ds.intervalMs,\n refId: target?.refId || 'annotationQuery',\n type: 'annotationQuery',\n queryType: QueryType.METRICS,\n metricQuery: {\n projectName: target?.projectName || ds.getDefaultProject(),\n editorMode: EditorMode.Visual,\n metricType: target?.metricType || '',\n filters: target?.filters || [],\n metricKind: target?.metricKind || MetricKind.GAUGE,\n query: '',\n crossSeriesReducer: 'REDUCE_NONE',\n perSeriesAligner: AlignmentTypes.ALIGN_NONE,\n title: target?.title || '',\n text: target?.text || '',\n },\n },\n };\n return result;\n },\n prepareQuery: (anno: AnnotationQuery) => {\n if (!anno.target) {\n return undefined;\n }\n\n return {\n ...anno.target,\n queryType: QueryType.METRICS,\n type: 'annotationQuery',\n metricQuery: {\n ...anno.target.metricQuery,\n },\n };\n },\n QueryEditor: AnnotationQueryEditor,\n };\n};\n","import { DataSourcePlugin } from '@grafana/data';\n\nimport CloudMonitoringCheatSheet from './components/CloudMonitoringCheatSheet';\nimport { ConfigEditor } from './components/ConfigEditor/ConfigEditor';\nimport { QueryEditor } from './components/QueryEditor';\nimport { CloudMonitoringVariableQueryEditor } from './components/VariableQueryEditor';\nimport CloudMonitoringDatasource from './datasource';\nimport { CloudMonitoringQuery } from './types';\n\nexport const plugin = new DataSourcePlugin(CloudMonitoringDatasource)\n .setQueryEditorHelp(CloudMonitoringCheatSheet)\n .setQueryEditor(QueryEditor)\n .setConfigEditor(ConfigEditor)\n .setVariableQueryEditor(CloudMonitoringVariableQueryEditor);\n"],"names":["CloudMonitoringCheatSheet","PureComponent","render","className","css","ConfigEditor","ConnectionConfig","this","props","CloudMonitoringVariableQueryEditor","constructor","super","value","MetricFindQueryTypes","label","selectedQueryType","queryTypes","metricDescriptors","selectedService","selectedMetricType","labels","labelKey","metricTypes","services","sloServices","selectedSLOService","projects","projectName","loading","queryModel","state","onChange","refId","Object","assign","defaults","datasource","getDefaultProject","query","getProjects","getMetricTypes","extractServicesFromMetricDescriptors","map","m","service","serviceShortName","some","s","getTemplateSrv","replace","length","getSLOServices","getLabels","setState","onPropsChange","queryType","metricType","onLabelKeyChange","componentDidUpdate","prevProps","prevState","selecQueryTypeChanged","selectSLOServiceChanged","result","getLabelKeys","l","renderQueryTypeSwitch","variableOptionGroup","expanded","options","getVariables","v","name","allowCustomValue","onProjectChange","onServiceChange","onMetricTypeChange","onQueryTypeChange","AnnotationQueryEditor","onRunQuery","data","meta","series","customMetaData","custom","metricQuery","editorMode","EditorMode","filters","metricKind","MetricKind","valueType","title","text","variableOptions","crossSeriesReducer","perSeriesAligner","AlignmentTypes","alignmentPeriod","defaultQuery","setTitle","useState","setText","toOption","useDebounce","MetricQueryEditor","htmlFor","Input","id","width","INPUT_WIDTH","e","target","CloudMonitoringMetricFindQuery","handleProjectsQuery","handleServiceQuery","handleMetricTypesQuery","handleLabelKeysQuery","handleLabelValuesQuery","handleResourceTypeQuery","handleAlignersQuery","handleAlignmentPeriodQuery","handleAggregationQuery","handleSLOServicesQuery","handleSLOQuery","handleSelectorQuery","error","console","expandable","getMetricTypesByService","templateSrv","displayName","type","toFindQueryResult","groupBys","interpolatedKey","hasOwnProperty","descriptor","find","getAlignmentOptionsByMetric","getAggregationOptionsByMetric","getServiceLevelObjectives","SELECTORS","ALIGNMENT_PERIODS","x","isString","CloudMonitoringVariableSupport","CustomVariableSupport","metricFindQuery","bind","request","executeObservable","from","execute","targets","ensureGCEDefaultProject","pipe","mergeMap","CloudMonitoringDatasource","DataSourceWithBackend","instanceSettings","timeSrv","getTimeSrv","ds","authenticationType","jsonData","variables","intervalMs","annotations","prepareAnnotation","undefined","isLegacyCloudMonitoringAnnotation","enable","iconColor","QueryType","prepareQuery","anno","QueryEditor","t","migrateQuery","applyTemplateVariables","scopedVars","sloQuery","getRef","interpolateProps","interpolateFilters","interpolateGroupBys","view","aggregation","range","timeRange","queries","lastValueFrom","getBackendSrv","fetch","url","method","valueOf","toString","to","dataQueryResponse","toDataQueryResponse","f","filter","p","reduce","acc","key","Set","add","fromEntries","entries","Array","of","results","getResource","defaultProject","gceDefaultProject","getGCEDefaultProject","serviceId","Promise","resolve","hide","rest","object","filterQuery","selectorName","sloId","interpolateVariablesInQueries","completeFilter","chunk","operator","condition","item","flatten","isArray","join","interpolatedGroupBys","forEach","gb","interpolated","split","concat","push","plugin","DataSourcePlugin","setQueryEditorHelp","setQueryEditor","setConfigEditor","setVariableQueryEditor"],"sourceRoot":""}