Commit Graph
794 Commits
Author SHA1 Message Date
Ryan McKinley e51c5796df Merge remote-tracking branch 'origin/main' into grafana-git-ui-sync 2025-03-05 09:54:51 +03:00
Ryan McKinleyandStephanie Hingtgen dc2defd84f K8s/Annotations: Use manager/source annotations rather than repo (#101313)
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
2025-03-05 08:54:20 +02:00
Ryan McKinley 301e727f82 merge dashboard changes 2025-03-04 07:50:04 +03:00
Ryan McKinley c1b48cc488 Dashboards: Add apiVersion to dashboard table (#100845) 2025-03-04 07:47:45 +03:00
Ryan McKinley 5d830e84b8 update openapi snapshot 2025-03-04 07:34:35 +03:00
Ryan McKinley bf5427e24c merge main 2025-03-03 23:08:19 +03:00
Alexander Akhmetov c7c68322b1 Alerting: Allow specifying a folder for Prometheus rule import (#101406)
What is this feature?

Allows the creation of alert rules with mimirtool in a specified folder.

Why do we need this feature?

Currently, the APIs for mimirtool create namespaces and rule groups in the root folder without the ability to set a custom folder. For example, it could be a special "Imported" folder, etc.

This PR makes it possible with a special header: mimirtool ... --extra-headers="X-Grafana-Alerting-Folder-UID=123". If it's not present, the root folder is used, otherwise, the specified one is used.

mimirtool does not support nested folder structures, while Grafana allows folder nesting. To keep compatibility, we return only direct child folders of the working folder (as namespaces) with rule groups and rules that are directly in these child folders as if there are no nested folders.

For example, given this folder structure in Grafana:

```
	grafana/
	├── production/
	│   ├── service1/
	│   │   └── alerts/
	│   └── service2/
	└── testing/
	    └── service3/
```

If the working folder is "grafana":

    Only namespaces "production" and "testing" are returned
    Only rule groups directly within these folders are included

If the working folder is "production":
   -  Only namespaces "service1" and "service2" are returned
    Only rule groups directly within these folders are included
2025-03-03 17:59:01 +01:00
Ryan McKinley f082f01d43 Merge remote-tracking branch 'origin/main' into grafana-git-ui-sync 2025-03-01 16:15:01 +03:00
Will AssisandJean-Philippe Quéméner f5e5824bab fix (unified-storage): stop registering unified storage metrics in global state (#101322)
* move prometheus.register for unified storage metrics into metrics.go and do most of the plumbing to get it to work

* convert StorageApiMetrics to pointer and check for nil before using it

* rename type and variables to something more sensible

---------

Co-authored-by: Jean-Philippe Quéméner <jeanphilippe.quemener@grafana.com>
2025-02-28 07:39:39 -05:00
Alexander Akhmetov ae2074ef55 Alerting: Fix updating Prometheus definition in the metadata (#101440)
Initially, Metadata had only the EditorSettings, and HasMetadata was used to understand if the incoming update request had metadata in the body because it could be omitted if it was empty. For example, when the rule is updated via the provisioning API or has only false values. If it was in the request, we used that; if not, we used the metadata from the existing rule from the database. If the rule was updated via the AlertRuleService, we didn't change Metadata at all if the rule already existed.

But now, Metadata also has the Prometheus rule definition, and we always need to update it with the new version of the AlertRuleService when the rule exists in the DB and has the same UID. HasMetadata is renamed to HasEditorSettings to keep the old behaviour only for EditorSettings.

Now, the provisioning API and the conversion API will overwrite everything except EditorSettings with the new data.
2025-02-28 13:11:49 +02:00
Roberto Jiménez Sánchez 52d32c7ff8 [Provisioning] Add more explicit setup warnings if webhook integration and image rendering are disabled (#101304)
* Setup warnings if renders or webhooks are not possible

* Improve display

* Use a single Alert

* Make design more compact

* Only display local config is missing critical feature toggles

* Improve styling of required flags

* Add file name to the custom ini itself

* Add copy button

* Add FeatureSection Component

* Commit betterer

* Use an interactive table

* Use a modal for instructions

* Use the same modal for example config

* Improve setup steps

* Improve stepper

* Copy code ctrl + c

* Make it more compact

* Select feature to enable

* Improve the height of alerts

* Separate components

* Better warnings

* Improve the page

* Improve the cards

* Improve cards even more

* Improve cards

* Improve cards

* Optional copy in code block

* Add side bar with steps

* Improve styling

* Style modal

* Clean up Code

* Remove index file

* Simplify Step Component

* Commit betterer

* Simplify components

* Use CodeEditor and Clipboard components

* Do not show scrollback on minimum size

* Fix positioning of footer

* Separate Component for Feature

* Use different styling

* Commit betterer

* Use more Grafana components in the FeatureCard

* Separate sidebar into own components

* Simplify sidebar code

* Commit betterer

* Remove connector

* Simplify styling further

* Use cards

* Improve code

* Use more grafana component in InstructionsModal

* Further simplify

* Simplify the code

* Simplify style

* Clean up

* Simplify the Wizard

* Use little icons

* Improve feature cards

* Improve cards

* Commit betterer

* Add description to feature setup

* Improve instructions for snapshot preview

* Move all files into Setup folder

* Commit betterer

* Clean up the warnings code

* Improve coding

* Move sidebar item to separate fiel

* Rename components

* Fix issues

* Use stack instead

* Improve style

* Don't show setup button if configured already

* Simplify again CSS

* Use secondary actions

* Style a bit more

* Improve wording

* Update warning

* Refer to docs in Image Renderer

* More clean up

* Revert changes in generated client
2025-02-28 10:04:57 +01:00
Ryan McKinley b94e192c0a merge main 2025-02-28 09:18:17 +03:00
Alexander Akhmetov ef86582dfc Alerting: API paths for cortextool to import Loki rules (#101409)
Alerting: Legacy rules paths for cortextool
2025-02-27 17:20:49 +01:00
Alexander Akhmetov d947433d19 Alerting: API to delete rule groups using mimirtool (#100687)
* Alerting: API to delete rule groups using mimirtool
2025-02-27 13:04:47 +01:00
Ryan McKinley 6e3c95abc8 Provisioning: Use blob storage rather than local file system to save images (#101298) 2025-02-26 11:29:00 +03:00
Ryan McKinley 2b882229ec merge main 2025-02-26 08:44:56 +03:00
Alex KhomenkoandRyan McKinley ff87355aba POC/Provisioning: Unify tags (#101218)
* Unify tags

* add both tags

* add tag types

* Check for the redirect only once

* Add fetch settings with delay hook

* Refetch settings

* Split hooks into separate files

* Cleanup

* Prettier

* Prettier

* Remove lint code

* Betterer

---------

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2025-02-25 19:06:47 +02:00
Alexander Akhmetov 6eb335a8ce Alerting: API to read rule groups using mimirtool (#100674) 2025-02-25 15:49:08 +01:00
Roberto Jiménez Sánchez caf4b3d346 [Provisioning] Remove linting from MVP (#101286)
* Remove Linting backend

* Re-generate client
2025-02-25 12:47:10 +01:00
Alexander Akhmetov b641fd64f9 Alerting: API to create rule groups using mimirtool (#100558)
What is this feature?

Adds an API endpoint to create alert rules with mimirtool:

- POST /convert/prometheus/config/v1/rules/{NamespaceTitle} - Accepts a single rule group in a Prometheus YAML format and creates or updates a Grafana rule group from it.

The endpoint uses the conversion package from #100224.

Key parts

The API works similarly to the provisioning API. If the rule does not exist, it will be created, otherwise updated. Any rules not present in the new group will be deleted, ensuring the group is fully synchronized with the provided configuration.

Since the API works with namespace titles (folders), the handler automatically creates a folder in the root based on the provided title if it does not exist. It also requires a special header, X-Grafana-Alerting-Datasource-UID. This header specifies which datasource to use for the new rules.

If the rule group's evaluation interval is not specified, it uses the DefaultRuleEvaluationInterval from settings.
2025-02-25 11:26:36 +01:00
Ryan McKinley 422519e84a update codegen 2025-02-24 21:22:54 +03:00
af61516986 POC/Provisioning: Handle connect step errors (#101192)
* Provisioning: Unify status handling in repository and migrate steps

* Refactor: Move WorkflowsField outside RepositoryStep and use proper type

* Refactor: Improve repository verification error handling and UI

* Refactor: Simplify repository verification error handling

* Refactor: Simplify RepositoryStep component structure

* Refactor: Improve error handling in RepositoryStep

* Refactor: Remove redundant repository creation logic from ProvisioningWizard

* Refactor: Simplify RequestErrorAlert component

* show github error

* now will verify

* test .git

* recover from bad config

* Update error handling

* Remove unused prop

* merge upstream

* Show migration summary

* Update text

* Improve text

* Betterer

* [Provisioning] Review controller changes (#101216)

* Review health check conditions

* Move down the logic to set up the sync status

* Skip if it's only a health check rerun

* Fix health check conditions

* Preserve last ref

* Format code

* Rename to shouldSkipSync

---------

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Roberto Jiménez Sánchez <roberto.jimenez@grafana.com>
2025-02-24 16:44:33 +02:00
Mariell Hoversholm fda4d575a5 Provisioning: Fix tests (#101197)
* Provisioning: Refactor tests to be multiple functions

* Provisioning: Fix tests

* fix: make github-example sync
2025-02-24 12:05:40 +01:00
Ryan McKinley a3d909d564 add missing file 2025-02-24 14:01:09 +03:00
Mariell Hoversholm e137385a81 Merge remote-tracking branch 'origin/main' into grafana-git-ui-sync 2025-02-24 10:17:08 +01:00
279b641469 Provisioning: Define large parts of our infrastructure (#101029)
* Provisioning: Define secrets service

* Provisioning: Create and store secrets service

* Provisioning: Define safepath

* Provisioning: Define the repository

* Identity: Support a provisioning service

* Provisioning: Define a job queue

* Chore: Regen code

* Provisioning: Show progress more often

Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>

* Provisioning: Rename hash field to lastRef

Co-Authored-By: =?UTF-8?q?Roberto=20Jim=C3=A9nez=20S=C3=A1nchez?= <roberto.jimenez@grafana.com>

* Provisioning: Workflows as write access

Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>

* Provisioning: Regen OpenAPI snapshot

* Provisioning: Update tests to match new fields

---------

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: =?UTF-8?q?Roberto=20Jim=C3=A9nez=20S=C3=A1nchez?= <roberto.jimenez@grafana.com>
2025-02-24 09:08:58 +01:00
Ryan McKinley 9d250f8a85 Merge remote-tracking branch 'origin/main' into grafana-git-ui-sync 2025-02-22 08:39:36 +03:00
Yuri Tseretyan d1dfa0576b Alerting: Support Jira Integration (#100480) 2025-02-21 12:51:38 -05:00
Ryan McKinley cfa4923fca Merge remote-tracking branch 'origin/main' into grafana-git-ui-sync 2025-02-21 13:29:41 +03:00
Carl Bergquist 79c0e5e3ec scopes: moves scopes to enterprise (#100746)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
2025-02-21 08:51:34 +01:00
Ryan McKinley 2c8a761213 merge main 2025-02-20 23:35:18 +03:00
Matthew Jacobson b1b5b4766c Alerting: Sanitize Slack image upload comment labels (#101084)
* Alerting: Sanitize Slack image upload comment labels

upgrades grafana/alerting to d43046
2025-02-20 12:22:04 -05:00
Roberto Jiménez Sánchez d10200c5ad [Provisioning] Fix issue with last ref (#101056)
* Fix issue with last ref

* Update frontend code

* Fix the local tmp test

* Use lastRef
2025-02-20 16:03:51 +01:00
842f68f91b Provisioning: Workflows as write access (#101031)
* workflow as write access

* workflow as write access

* workflow as write access

* Update pkg/registry/apis/provisioning/repository/test.go

Co-authored-by: Mariell Hoversholm <mariell.hoversholm@grafana.com>

* POC/Provisioning: Add wizard (#100596)

* update refs

* update refs

* lint fix

* lint fix

* lint fix

* default everythign to read only

* reuse form components

* remove main

---------

Co-authored-by: Mariell Hoversholm <mariell.hoversholm@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2025-02-20 11:01:03 +01:00
Mariell Hoversholm d9e42df9d8 Chore: Fix lints (#101039) 2025-02-20 12:47:10 +03:00
Ryan McKinley e6d3834096 github v69 2025-02-19 22:06:42 +03:00
Ryan McKinley 61d901a10c Provisioning: Move legacy export/import into a single migrate job (#100865) 2025-02-19 18:59:52 +03:00
Ryan McKinley adced54841 fix lint 2025-02-19 18:26:55 +03:00
Ryan McKinley 5a40c84568 DualWriter: Support managed DualWriter (#100881) 2025-02-19 17:50:39 +03:00
Mariell Hoversholm 43df78669d Merge remote-tracking branch 'origin/main' into grafana-git-ui-sync 2025-02-19 13:25:58 +01:00
Stephanie Hingtgen 3e6f40c873 K8s: Move to one feature toggle for folders and dashboards (#100911) 2025-02-19 01:11:26 +02:00
Mariell Hoversholm 77a11efe0c Merge remote-tracking branch 'origin/main' into grafana-git-ui-sync 2025-02-18 14:09:31 +01:00
Mariell Hoversholm 64f5e34ed6 Provisioning: Test the GitHub client directly (#100808)
* Provisioning: Test the GitHub client directly

Instead of mocking the abstracted client, test it as well by mocking the underlying GitHub client. This also lets us
remove the mock for the abstracted client.

* refactor: move out helpers

* chore: set dependency owner
2025-02-18 08:46:08 +01:00
Mat RyerandSven Grossmann ff7ba54cbc Investigations: Add experimental app platform backend (#100584)
* add investigations group?

* Investigations: Add experimental app platform backend

* change `grafana-app-sdk/logging` version

* investigations: add feature flag to test

---------

Co-authored-by: Sven Grossmann <svennergr@gmail.com>
2025-02-17 19:19:22 +01:00
Mariell Hoversholm 23e08778c9 Merge remote-tracking branch 'origin/main' into grafana-git-ui-sync 2025-02-17 13:20:19 +01:00
f535a7804f Provisioning: Update types (#100722)
* Provisioning: Remove S3

* Provisioning: Use URL for GitHub

Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>
Co-Authored-By: Alex Khomenko <Clarity-89@users.noreply.github.com>

* Provisioning: Use workflow list

Co-Authored-By: =?UTF-8?q?Roberto=20Jim=C3=A9nez=20S=C3=A1nchez?= <roberto.jimenez@grafana.com>

* Provisioning: Model secrets

* Provisioning: Define a total in the job summary

* Provisioning: Generate code

* Provisioning: Update testdata

---------

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: =?UTF-8?q?Roberto=20Jim=C3=A9nez=20S=C3=A1nchez?= <roberto.jimenez@grafana.com>
2025-02-17 12:45:23 +01:00
Karl Persson 6eeb28e312 Authn: use authenticator for grpc (#99573)
* Remove usage of grpc-authenticator

* Cleanup client construction code
2025-02-17 10:58:59 +01:00
Clarity-89 843281315b Merge branch 'main' into grafana-git-ui-sync
# Conflicts:
#	pkg/server/wire.go
#	pkg/services/apiserver/service.go
#	pkg/tests/apis/openapi_test.go
#	public/app/core/reducers/root.ts
#	scripts/generate-rtk-apis.ts
2025-02-17 09:00:14 +02:00
Andrej Ocenas eff847e31f Query Library: Move backend to enterprise (#100371) 2025-02-17 08:56:55 +02:00
Tito Lins e343cb5ac9 Alerting: Stop running AM integration tests on CI (#100702) 2025-02-14 16:55:20 +01:00