* Build out barebones Traces editor
- Add Traces query type and operation ID prop to query type
- Add necessary header types
- Update resource picker to appropriately work with traces query type
- Build out TracesQueryEditor component
- Include logic to retrieve operationId's for AI Workspaces
- Add backend route mapping
- Update macro to use timestamp as default time field for traces
* AzureMonitor: Traces - Response parsing (#65442)
* Update FormatAsField component
- Add trace ResultFormat type
- Generalise FormatAsField component
- Add component to TracesQueryEditor
- Remove duplicate code in setQueryValue
* Add custom filter function to improve performance
* Add basic conversion for logs to trace
- Add serviceTags converter
- Pass through required parameters (queryType and resultFormat)
- Appropriately set visualisation
* Update parsing to also fill trace tags
- Add constant values for each table schema (include legacy mapping for now if needed)
- Add constant for list of table tags
- Set the foundation for dynamic query building
- Update query to build tags value
- Appropriately set operationName
- Update tagsConverter to filter empty values
* Fix lint and test issues
* AzureMonitor: Traces - Data links (#65566)
* Add portal link for traces
- Pull out necessary values (itemId and itemType)
- Appropriately construct
- Fix ordering
* Set default format as value
- Also set default visualisation
* Fix event schema
* Set default formatAsField value
* Include logs link on traces results
- Adapt config links to allow custom title to be set
* Correctly set operationId for query
* Update backend types
- Include OperationID in query
- Pass forward datasource name and UID
* Ensure setTime doesn't consistently get called if operationID is defined
* Add explore link
- Update util functions to allow setting custom datalinks
* Fix tests
* AzureMonitor: Traces - Query and Editor updates (#66076)
* Add initial query
- Will query the resource as soon as a resource has been selected
- Updates the data links for the query without operationId
- Remove initial operationId query and timeRange dependency
- Update query building
* Add entirely separate traces query property
- Update shared types (also including future types for Azure traces)
- Update backend log analytics datasource to accept both azureLogAnalytics and azureTraces queries
- Update backend specific types
- Update frontend datasource for new properties
- Update mock query
* Update FormatAsField to be entirely generic
* Update query building to be done in backend
- Add required mappings in backend
- Update frontend querying
* Fix query and explore data link
* Add trace type selection
* Better method for setting explore link
* Fix operationId updating
* Run go mod tidy
* Unnecessary changes
* Fix tests
* AzureMonitor: Traces - Add correlation API support (#65855)
Add correlation API support
- Add necessary types
- Add correlation API request when conditions are met
- Update query
* Fix property from merge
* AzureMonitor: Traces - Filtering (#66303)
* Add initial query
- Will query the resource as soon as a resource has been selected
- Updates the data links for the query without operationId
- Remove initial operationId query and timeRange dependency
- Update query building
* Add entirely separate traces query property
- Update shared types (also including future types for Azure traces)
- Update backend log analytics datasource to accept both azureLogAnalytics and azureTraces queries
- Update backend specific types
- Update frontend datasource for new properties
- Update mock query
* Update FormatAsField to be entirely generic
* Update query building to be done in backend
- Add required mappings in backend
- Update frontend querying
* Fix query and explore data link
* Add trace type selection
* Better method for setting explore link
* Fix operationId updating
* Run go mod tidy
* Unnecessary changes
* Fix tests
* Start building out Filters component
- Configure component to query for Filter property values when a filter property is set
- Add setFilters function
- Add typing to tablesSchema
- Use component in TracesQueryEditor
* Update Filters
- Asynchronously pull property options
- Setup list of Filter components
* Update filters component
- Remove unused imports
- Have local filters state and query filters
- Correctly set filters values
- Don't update query every time a filter property changes (not performant)
* Update properties query
- Use current timeRange
- Get count to provide informative labels
* Reset map when time changes
* Add operation selection
* Reset filters when property changes
* Appropriate label name for empty values
* Add filtering to query
* Update filter components
- Fix rendering issue
- Correctly compare and update timeRange
- Split out files for simplicity
* Add checkbox option to multiselect
- Add custom option component
- Correctly call onChange
- Add variableOptionGroup for template variable selection
* Fix adding template vars
* Improve labels and refresh labels on query prop changes
* AzureMonitor: Traces - Testing (#66474)
* Select ds for template variable interpolation
* Update az logs ds tests
- Add templateVariables test
- Add filter test
- Update mock
- Remove anys
* Update QueryEditor test
- Update mocks with timeSrv for log analytics datasource
- Fix query mock
- Use appropriate and consistent selectors
* Add TracesQueryEditor test
- Update resourcePickerRows mock to include app insights resources
- Remove comments and extra new line
* Add FormatAsField test
- Remove unneeded condition
* Update resourcePicker utils test
* Don't hide selected options in filters
* Fix multi-selection on filters
* Add TraceTypeField test
- Add test file
- Update selectors (remove copy/paste mistake)
- Update placeholder text for select and add label
* Add basic filters test
* Begin filters test
* Update filters test
* Add final tests and simplify/generalise addFilter helper
* Minor update to datasource test
* Update macros test
* Update selectors in tests
* Add response-table-frame tests
* Add datasource tests
- Use sorting where JSON models are inconsistent
- Update filters clause
- Dedupe tags
- Correct operationId conditions
* Don't set a default value for blurInputOnSelect
* Simplify datasource test
* Update to use CheckGoldenJSON utils
- Update with generated frame files
- Remove redundant expected frame code
- Update all usages
* Fix lint
* AzureMonitor: Traces feedback (#67292)
* Filter traces if the visualisation is set to trace
- Update build query logic
- Added additional test cases
- Return an error if the traces type is set by itself with the trace visualisation
- Add descriptions to event types
- Update tests
* Fix bug for error displaying traces
* Update mappings and add error field
- Update tests
- Remove unnecessary comments
* Switch location of Operation ID field
* Re-order fields
* Update link title
* Update label for event type selection
* Update correct link title
* Update logs datalink to link to Azure Logs in explore
* Fix lint
* Update ARG Subscription selection
- Filter out queries that do not contain at least one subscription
- Refactor SubscriptionField component
- Display error if no subscriptions are selected
- Update tests
* Fix test
* Update e2e package
- Ensure health request is monitored for addDatasource flow
- Add custom timeout to configurePanel flow
* Make health check optional
* 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
* Move DefaultSubscriptions field to separate component
- Add separate component
- Update CredentialsForm
- Update tests
- Remove redundant test
* Remove defaultSubscriptionId
- Update MonitorConfig to appropriately set subscriptionId
- Update DefaultSubscription component to make use of JsonData
- Remove references to defaultSubscriptionId
- Update tests
- Update mockInstanceSettings for flexibility
* Review
- Add DefaultSubscription test and remove component from AzureCredentialsForm test
- Remove onCredentialsChange from DefaultSubscription
- Set subscription as a part of onSubscriptionChange
* Reset filters when service is changed
* Update to reset any query props
* Reset query properties on metric change
* Update tests
* Refresh labels on panel time update
* Review
* Refactor VisualMetricsQueryEditor
- Move any Metrics functionality to VisualMetricsQueryEditor
- Update tests
- Expose timeSrv from datasource
- Update getLabels to make use of provided timeRange
* Review
* Add adoption metrics for Cloud Monitoring
- Add metrics to track each query type (MQL/Time Series Query, Builder/Time Series Filter, SLO, Annotation)
* Remove hidden fields and account for pre 9.4 queries
* Simplify object
* Add ability to retry e2e test scenarios
* Add wait and remove retries
* Revert retry logic and elaborate on 15s wait time
* No need to update datasource name now
* Correctly set filter values in portal URL
* Refactor to include dimensions as a part of AzureMonitor query
* Correctly set splitting value in URL
- Add type for dimension filters object
* Update tests
* Don't test dimensions
* Update credentials form with data-testids and aria-labels
* Update gitignore
* Add example dashboard
* Stub out E2E test for creating ds and importing dashboard
* Add component selectors
* Remove subscription check temporarily
* Appropriately set disabled prop
* Fix lint issues
* Update to use selectors and wait on subscriptions request
* Add test for metrics panel
- Add required selectors for resource picker and metrics query editor
* Add logs and ARG basic query scenarios
- More selector updates
* Add E2E test for template variables
- Tests advanced resource picker
- Adds required selectors
* Remove log and add annotation e2e test
* Update test
* Prettier/betterer updates
- Remove gitignore change
* Lint issues
* Update betterer results
* Lint issue and remove unneeded import
* Don't print certain commands
* Avoiding flakiness
- Ensure code editor has sufficient time to load in ARG test
- Avoid flakiness around correct template variable being selected by typing in resource name
* Remove be.visible requirement
* Update test
* Update selector name
* Reuse datasource
* Fix datasource reuse and combine query tests
* Remove import dashboard step as unneeded
* Review
- Randomise datasource name
- Skip annotations test
- Remove unused example dashboard
* Update to ensure e2e test works in CI
* Update e2e test
- Update environment variables (process is not available in cypress)
- Add wait on resource picker searches to avoid flakiness
- Update subscription and resource group names
* Update CODEOWNERS
* Parse credentials in CI from outputs file
* Update outputs file path
* Fix selector
* Undo selector change
* Update e2e tests
- Set default subscription
- Fix datasource selection in variable editor
- Fix resource picker search flakiness
- Set subscription in ARG query test
- Fix resource group selection
- Update resource group
* Review
* Review 2
* Ensure resourceURI template vars are migrated
- Do not filter queries containing a resource URI template
- Update migration
- Add test
* Update condition
* Review
- Update componentDidMount to call ensureGCEDefaultProject to correctly set project name for GCE Service Account auth
- Set state appropriately
- Update test
* Correctly pass all original query parameters on interpolation
* Add datasource tests
- Update props on mock query
- Add mock instance settings
- Add util function to generate template variables
- Add datasource test file
- Correct setting of templateSrv
- Update betterer results
* Simplify test and pass templateSrv appropriately
* Fix lint issue
* Simplify test and add type that supports parital nested objects
* Update test and remove unneeded util function
* Rename to avoid duplicate mock
* Ensure resource name is appended to URI
* Add storage account check to ensure default subresource is appended
* Update storage dashboard
* Bump storage version
* Remove ADX StreamingIngestRequestRate panel as the metric is unavailable
* Refactor condition for storage namespaces
* Add more tests for URI builder
* Do not migrate resource URI if resource name or metric definition uses template variables
* Revert change to metricNamespace
* Add check health functions for each datasource and generic checkHealth function
* Log backend errors
* Update testDatasource function
- Remove unused testDatasource functions from pseudo datasources
* Switch datasource to extend DataSourceWithBackend
* Improve errors and responses from health endpoint
* Fix backend lint issues
* Remove unneeded frontend tests
* Remove unused/unnecessary datasource methods
* Update types
* Improve message construction
* Stubbing out checkHealth tests
* Update tests
- Remove comments
- Simplify structure
* Update log analytics health check to query data rather than retrieve workspace metadata
* Fix lint issue
* Fix frontend lint issues
* Update pkg/tsdb/azuremonitor/azuremonitor.go
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* Updates based on PR comments
- Don't use deprecated default workspace field
- Handle situation if no workspace is found by notifying user
- Correctly handle health responses
* Remove debug line
* Make use of defined api versions
* Remove field validation functions
* Expose errors in frontend
* Update errors and tests
* Remove instanceSettings
* Update error handling
* Improve error handling and presentation
* Update tests and correctly check error type
* Refactor AzureHealthCheckError and update tests
* Fix lint errors
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* Ensure original query properties are included unchanged
* Remove refId from pseudo datasources
* Include testing for interpolateVariablesInQueries
- Add util function to create template variables
- Update mock query with missing props
- Additional tests on each ds for template variables
* Correct typo and add explicit check for datasource
* Correctly encode default project response
* Make getGCEDefaultProject a method of Service and add test
* Handle error appropriately
* Update test and function definition
* Update query editor to fix auto time-grain selection
* Update new query editor to fix auto time-grain selection
* Remove log and fix lint issues
* Add test for useMetricMetadata
- Add necessary types
* More test updates
- Update old dataHooks test
- Ensure query changes
Co-authored-by: Kevin Yu <kevinwcyu@users.noreply.github.com>
Co-authored-by: Andres Martinez Gotor <andres.mgotor@gmail.com>
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
* Add support for multiselect
- Add filters param to Dimensions
- Update existing tests
- Add MultiSelect component
- Add helper function to determine valid options
- Update labels hook to account for custom values
- Update go type
- Add function to build valid filters string
* Additional go tests
- Ensure query targets are built correctly
* Update DimensionFields frontend test
- Corrently rerender components
- Additional test for multiple labels selection
- Better selection of options in react-select components
* Fix lint issue
* Reset filters when operator or dimension changes
* Terminology
* Update test
* Add backend migration
- Update types (deprecate Filter field)
- Add migration logic
- Update tests
- Update dimension filters buliding
* Add migration test code
* Simplify some logic
* Add frontend deprecation notice
* Add frontend migration logic and migration tests
* Update setting of filter values
* Update DimensionFields test
* Fix linting issues
* PR comment updates
- Remove unnecessary if/else condition
- Don't set filter default value as queries should be migrated
- Add comment explaining why sw operator only accepts one value
- Remove unnecessary test for merging of old and new filters
* Nit on terminology
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* Rename migrations for clarity
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* Allow dimension operator selection
- Add dimension operators and function to update the operator in the query
- Add logic to ensure the same dimension cannot be selected multiple times (Azure restriction)
- Add selection component
* Update backend logic to default operation and filter to eq '*'
- This must be done as the ne and sw operators do not work with the wildcard filter
* Add tests on dimension operators
* Correct placement of 'and' when building query
* Add comment and simplify filtering logic
* Allow multiSelect for eq and ne operators
- Pass PanelData to DimensionFields component
- Add logic to retrieve labels from PanelData
- Add MultiSelect component for relevant operators
- Update frontend types to allow filter to be an array of strings
- Update backend types to allow filter to be an array of strings
- Update filter string building
* Improve setting of labels
* Update go tests
* Update frontend tests
- Add panelData mock (to be expanded later)
- Update null check in DimensionFields
* Allow custom value and set default
* Add frontend test and fix lint issues
* Improved handling of options for sw operator
* Remove changes related to multiselect
* Add check on refId to ensure dimension labels are correct for query
* Extract custom hook for setting dimension labels
* Add documentation around Azure Monitor metrics dimensions
* Update MetricQueryEditor tests
- Add missing data prop
* Correctly set field values
* Add additional expect for onQueryChange
* Correctly set operators
- Simplify onFilterInputChange
* Ensure no duplicate filters appear
* Ensure that filters are displayed correctly for saved queries
* Update dimension filter test
* Include additional test around changing dimension labels
* Pass panel data through new metrics query editor
* Additional logic to handle quoted values
* Simple test with quoted values that include spaces
* Update test description
* Updating logic to account for nested quotes
- Adding additional test for nested quotes
* Strip out line breaks and carriage returns pre-processing
* Fix typo in test result
* Update key-value logic to avoid regexp
- Minor changes to account for null values
* Correct escaping on test
* Additional tests
- Test for null values
- Test for nested separator characters
- Update quoting