grafana/public/app/plugins/datasource/azuremonitor/dataquery.cue
Andreas Christou d7f7cd1e61
Schema: Initial Azure Monitor query schema (#62018)
* Initial schema

- Add types based off of current frontend

* Rename and field-level comments

* Update report and regenerate files

* Rename frontend Azure folder

- Doing this for consistency and to ensure code-generation works
- Update betterer results due to file renames

* Remove default and add back enum vals that I deleted

* Set workspace prop as optional

* Replace template variable types

* Connect frontend query types

- Keep properties optional for now to avoid major changes
- Rename AzureMetricResource
- Correctly use ResultFormat

* Add TSVeneer decorator

* Update schema

* Update type

* Update CODEOWNERS

* Fix gen-cue issue

* Fix backend test

* Fix e2e test

* Update code coverage

* Remove references to old Azure Monitor path

* Review

* Regen files
2023-02-03 16:06:54 +00:00

215 lines
9.1 KiB
CUE

// Copyright 2023 Grafana Labs
//
// Licensed under the Apache License, Version 2.0 (the "License")
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package grafanaplugin
import (
common "github.com/grafana/grafana/packages/grafana-schema/src/common"
"github.com/grafana/grafana/pkg/plugins/pfs"
)
// This file (with its sibling .cue files) implements pfs.GrafanaPlugin
pfs.GrafanaPlugin
composableKinds: DataQuery: {
maturity: "merged"
lineage: {
seqs: [
{
schemas: [
{
#AzureMonitorQuery: common.DataQuery & {
// Azure subscription containing the resource(s) to be queried.
subscription?: string
// Subscriptions to be queried via Azure Resource Graph.
subscriptions?: [...string]
// Azure Monitor Metrics sub-query properties.
azureMonitor?: #AzureMetricQuery
// Azure Monitor Logs sub-query properties.
azureLogAnalytics?: #AzureLogsQuery
// Azure Resource Graph sub-query properties.
azureResourceGraph?: #AzureResourceGraphQuery
// @deprecated Legacy template variable support.
grafanaTemplateVariableFn?: #GrafanaTemplateVariableQuery
// Template variables params. These exist for backwards compatiblity with legacy template variables.
resourceGroup?: string
namespace?: string
resource?: string
region?: string
// Azure Monitor query type.
// queryType: #AzureQueryType
} @cuetsy(kind="interface") @grafana(TSVeneer="type")
// Defines the supported queryTypes. GrafanaTemplateVariableFn is deprecated
#AzureQueryType: "Azure Monitor" | "Azure Log Analytics" | "Azure Resource Graph" | "Azure Subscriptions" | "Azure Resource Groups" | "Azure Namespaces" | "Azure Resource Names" | "Azure Metric Names" | "Azure Workspaces" | "Azure Regions" | "Grafana Template Variable Function" @cuetsy(kind="enum", memberNames="AzureMonitor|LogAnalytics|AzureResourceGraph|SubscriptionsQuery|ResourceGroupsQuery|NamespacesQuery|ResourceNamesQuery|MetricNamesQuery|WorkspacesQuery|LocationsQuery|GrafanaTemplateVariableFn")
#AzureMetricQuery: {
// Array of resource URIs to be queried.
resources?: [...#AzureMonitorResource]
// metricNamespace is used as the resource type (or resource namespace).
// It's usually equal to the target metric namespace. e.g. microsoft.storage/storageaccounts
// Kept the name of the variable as metricNamespace to avoid backward incompatibility issues.
metricNamespace?: string
// Used as the value for the metricNamespace property when it's different from the resource namespace.
customNamespace?: string
// The metric to query data for within the specified metricNamespace. e.g. UsedCapacity
metricName?: string
// The Azure region containing the resource(s).
region?: string
// The granularity of data points to be queried. Defaults to auto.
timeGrain?: string
// The aggregation to be used within the query. Defaults to the primaryAggregationType defined by the metric.
aggregation?: string
// Filters to reduce the set of data returned. Dimensions that can be filtered on are defined by the metric.
dimensionFilters?: [...#AzureMetricDimension]
// Maximum number of records to return. Defaults to 10.
top?: string
// Time grains that are supported by the metric.
allowedTimeGrainsMs?: [...int64]
// Aliases can be set to modify the legend labels. e.g. {{ resourceGroup }}. See docs for more detail.
alias?: string
// @deprecated
timeGrainUnit?: string
// @deprecated This property was migrated to dimensionFilters and should only be accessed in the migration
dimension?: string
// @deprecated This property was migrated to dimensionFilters and should only be accessed in the migration
dimensionFilter?: string
// @deprecated Use metricNamespace instead
metricDefinition?: string
// @deprecated Use resourceGroup, resourceName and metricNamespace instead
resourceUri?: string
// @deprecated Use resources instead
resourceGroup?: string
// @deprecated Use resources instead
resourceName?: string
} @cuetsy(kind="interface")
// Azure Monitor Logs sub-query properties
#AzureLogsQuery: {
// KQL query to be executed.
query?: string
// Specifies the format results should be returned as.
resultFormat?: #ResultFormat
// Array of resource URIs to be queried.
resources?: [...string]
// Workspace ID. This was removed in Grafana 8, but remains for backwards compat
workspace?: string
// @deprecated Use resources instead
resource?: string
} @cuetsy(kind="interface")
#ResultFormat: "table" | "time_series" @cuetsy(kind="enum", memberNames="Table|TimeSeries")
#AzureResourceGraphQuery: {
// Azure Resource Graph KQL query to be executed.
query?: string
// Specifies the format results should be returned as. Defaults to table.
resultFormat?: string
} @cuetsy(kind="interface")
#AzureMonitorResource: {
subscription?: string
resourceGroup?: string
resourceName?: string
metricNamespace?: string
region?: string
} @cuetsy(kind="interface")
#AzureMetricDimension: {
// Name of Dimension to be filtered on.
dimension?: string
// String denoting the filter operation. Supports 'eq' - equals,'ne' - not equals, 'sw' - starts with. Note that some dimensions may not support all operators.
operator?: string
// Values to match with the filter.
filters?: [...string]
// @deprecated filter is deprecated in favour of filters to support multiselect.
filter?: string
} @cuetsy(kind="interface")
#GrafanaTemplateVariableQueryType: "AppInsightsMetricNameQuery" | "AppInsightsGroupByQuery" | "SubscriptionsQuery" | "ResourceGroupsQuery" | "ResourceNamesQuery" | "MetricNamespaceQuery" | "MetricNamesQuery" | "WorkspacesQuery" | "UnknownQuery" @cuetsy(kind="type")
#BaseGrafanaTemplateVariableQuery: {
rawQuery?: string
...
} @cuetsy(kind="interface")
#UnknownQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "UnknownQuery"
} @cuetsy(kind="interface")
#AppInsightsMetricNameQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "AppInsightsMetricNameQuery"
} @cuetsy(kind="interface")
#AppInsightsGroupByQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "AppInsightsGroupByQuery"
metricName: string
} @cuetsy(kind="interface")
#SubscriptionsQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "SubscriptionsQuery"
} @cuetsy(kind="interface")
#ResourceGroupsQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "ResourceGroupsQuery"
subscription: string
} @cuetsy(kind="interface")
#ResourceNamesQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "ResourceNamesQuery"
subscription: string
resourceGroup: string
metricNamespace: string
} @cuetsy(kind="interface")
#MetricNamespaceQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "MetricNamespaceQuery"
subscription: string
resourceGroup: string
metricNamespace?: string
resourceName?: string
} @cuetsy(kind="interface")
// @deprecated Use MetricNamespaceQuery instead
#MetricDefinitionsQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "MetricDefinitionsQuery"
subscription: string
resourceGroup: string
metricNamespace?: string
resourceName?: string
} @cuetsy(kind="interface")
#MetricNamesQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "MetricNamesQuery"
subscription: string
resourceGroup: string
resourceName: string
metricNamespace: string
} @cuetsy(kind="interface")
#WorkspacesQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "WorkspacesQuery"
subscription: string
} @cuetsy(kind="interface")
#GrafanaTemplateVariableQuery: #AppInsightsMetricNameQuery | #AppInsightsGroupByQuery | #SubscriptionsQuery | #ResourceGroupsQuery | #ResourceNamesQuery | #MetricNamespaceQuery | #MetricDefinitionsQuery | #MetricNamesQuery | #WorkspacesQuery | #UnknownQuery @cuetsy(kind="type")
},
]
},
]
}
}