* Split all named types out into defs, etc.
* Use latest cuetsy, refactor generators accordingly
* Return AST type from plugin TS generator
* Near-complete checkin of TS veneer code generator
* First full completed pass
* Improve the attribute name
* Defer use of the dashboard veneer type to follow-up
* Remove dummy index, prettier on veneer
* Fix merge errors in gen.go
* Add match field to SpecialValueMap
* Fix backend lint errors
* metrics: Fix broken DBStats metrics
Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
* Register the sqlstats metrics by default
Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
* coremodels: Convert plugin-metadata schema to a coremodel
* Newer cuetsy; try quoting field name
* Add slot definitions
* Start sketching out pfs package
* Rerun codegen with fixes, new cuetsy
* Catch up dashboard with new cuetsy
* Update to go1.18
* Use new vmuxers in thema
* Add slot system in Go
* Draft finished implementation of pfs
* Collapse slot pkg into coremodel dir; add PluginInfo
* Add the mux type on top of kernel
* Refactor plugin generator for extensibility
* Change models.cue package, numerous debugs
* Bring new output to parity with old
* Remove old plugin generation logic
* Misc tweaking
* Reintroduce generation of shared schemas
* Drop back to go1.17
* Add globbing to tsconfig exclude
* Introduce pfs test on existing testdata
* Make most existing testdata tests pass with pfs
* coremodels: Convert plugin-metadata schema to a coremodel
* Newer cuetsy; try quoting field name
* Add APIType control concept, regen pluginmeta
* Use proper numeric types for schema fields
* Make pluginmeta schema follow Go type breakdown
* More decomposition into distinct types
* Add test case for no plugin.json file
* Fix missing ref to #Dependencies
* Remove generated TS for pluginmeta
* Update dependencies, rearrange go.mod
* Regenerate without Model prefix
* Use updated thema loader; this is now runnable
* Skip app plugin with weird include
* Make plugin tree extractor reusable
* Split out slot lineage load/validate logic
* Add myriad tests for new plugin validation failures
* Add test for zip fixtures
* One last run of codegen
* Proper delinting
* Ensure validation order is deterministic
* Let there actually be sorting
* Undo reliance on builtIn field (#54009)
* undo builtIn reliance
* fix tests
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Relocate dashboards test so it runs
* Cover newer schema versions in stripnulls
* Strip nulls and remove iteration fields
* Fix fiscalYearStartMonth bounds
* Fix up and format dashboard schema
* Update thema, tidy Go dependencies
* Change of sqlstore to use sqlx
* Use sqlx in the playlist store
* Refectory of the interface
* update playlist service
* go mod tidy
* some refectory on interface
* fix kyle
* Fix get legacy alert response
* Swagger: Fix get folder by UID response
* Fix conflicting swagger model Alert
Reanme legacy alerting swagger model to LegacyAlert to differentiate it
from the prometheus Alert
* Bump grafana-plugin-sdk-go
* Fix get folder response
* Use go-swagger command for merging the specifications and remove merge_specs script
If SQLite is used and the database is locked temporarily (ex. heavy write-load) during periodic
AM config sync, it was possible for your AM config to be overwritten with the default one.
This fixes that by patching a bug in xorm v0.8.2 which was causing SQLITE_BUSY errors to be ignored
in certain cases.
* Add go code generator for coremodels
* Just generate the entire coremodel for now
Maybe we'll need more flexibility as more coremodels are added, but for
now this is fine.
* Add note on type comment about stability, grodkit
* Remove local replace directive for thema
* Generate typescript from coremodel
* Update pkg/coremodel/dashboard/addenda.go
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Update cuetsy to new release
* Update thema to latest
* Fix enum generation for FieldColorModeId
* Put main generated object at the end of the file
* Tweaks to generated Go output
* Retweak back to var
* Add generated coremodel test
* Remove local replace statement again
* Add Make target and call into cuetsy cmd from gen
* Rename and comment linsrc for readability
* Move key codegen bits into reusable package
* Move body of cuetsifier into codegen pkg
Also genericize the diffing output into reusable WriteDiffer.
* Refactor coremodel generator to use WriteDiffer
* Add gen-cue step to CI
* Whip all the codegen automation into shape
* Add simplistic coremodel canonicality controls
* Remove erroneously committed test
* Bump thema version
* Remove dead code
* Improve wording of non-canonicality comment
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Add coremodelValidation feature flag
* coremodels: use stubs when feature flag is off
* api: validate dashboards on save
* Need pointer receiver for FeatureManager
* Update dashboard Go model
* Align doc comments
* Include CoremodelRegistry in test
* Wedge coremodel in on all test cases, ugh
* Ugh fix comment again
* Update pkg/framework/coremodel/staticregistry/provide.go
Co-authored-by: Artur Wierzbicki <wierzbicki.artur.94@gmail.com>
* Update Thema (and its deps) for better errs
* omg whitespace
Co-authored-by: Artur Wierzbicki <wierzbicki.artur.94@gmail.com>
* Add explicit cuetsy annotations to all models.cue
* Update to first cuetsy release
* Clean up cuetsify a bit; remove unification
* Update changes to news codegen output
* Copy over most of coremodel from intent-api branch
* Fix import paths
* Fix incorrect provider name
* Add root compgen file, fixup componentroot.yaml
* go mod tidy
* Remove compgen for now
* Add dashboard coremodel
* Remove datasource coremodel, for now
* Tweak comments on dashboard struct model
* devenv: add dashboard testing directly
* Fixup dashboard schema for openness, heatmap
* Update Thema to tip
* Fix wire/registry references
* Fix hclog version
* API: Using go-swagger for extracting OpenAPI specification from source code
* Merge Grafana Alerting spec
* Include enterprise endpoints (if enabled)
* Serve SwaggerUI under feature flag
* Fix building dev docker images
* Configure swaggerUI
* Add missing json tags
Co-authored-by: Ying WANG <ying.wang@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Add interface Tracer, add Opentelemetry
* Fix lint
* Fix failing tests and return error if config not parsed fo opentelemetry
* Update defaults.ini
Add comment with jaeger url
* go mod tidy
* Remove comments that are not needed
* Move OpentracingSpan to tracing.go
* Add opentelemetry to sample.ini
* Alerting: accept mute_timing_intervals through the api for the embedded alertmanager
* add workaround for mutetimeinterval
* add mute timings to routes
* revert changes
* Update pkg/services/ngalert/api/api_alertmanager.go
* Update pkg/services/ngalert/api/api_alertmanager.go
* Update pkg/services/ngalert/api/api_alertmanager.go
* update prometheus/alertmanager dependency
* add some var docs
* update loki
* install openssl from alpine's edge repository
* extracttraceid moved to tracing package
* remove exit if warning limit is exceeded
* disable flaky libraryelements test
Remove validation for labels to be accepted in the Alertmanager, This helps with datasources that produce non-compatible labels.
Adds an "object_matchers" to alert manager routers so we can support labels names with extended characters beyond prometheus/openmetrics. It only does this for the internal Grafana managed Alert Manager.
This requires a change to alert manager, so for now we use grafana/alertmanager which is a slight fork, with the intention of going back to upstream.
The frontend handles the migration of "matchers" -> "object_matchers" when the route is edited and saved. Once this is done, downgrades will not work old versions will not recognize the "object_matchers".
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Nathan Rodman <nathanrodman@gmail.com>
* change global flag to flagset
* update pr with comments
* replace flag.args by flagset
* fix build
* migrate the schema package to use cue 4.0
* fix the load package
* Alerting: Persist notification log and silences to the database
This removes the dependency of having persistent disk to run grafana alerting. Instead of regularly flushing the notification log and silences to disk we now flush the binary content of those files to the database encoded as a base64 string.
* Update to golang 1.17
* Further updates
* Run go mod tidy on go 1.17
* Apply suggestions from code review
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Use build-container:1.4.2
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Fixes#30144
Co-authored-by: dsotirakis <sotirakis.dim@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Ida Furjesova <ida.furjesova@grafana.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: spinillos <selenepinillos@gmail.com>
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
* Alerting: Send alerts to external Alertmanager(s)
Within this PR we're adding support for registering or unregistering
sending to a set of external alertmanagers. A few of the things that are
going are:
- Introduce a new table to hold "admin" (either org or global)
configuration we can change at runtime.
- A new periodic check that polls for this configuration and adjusts the
"senders" accordingly.
- Introduces a new concept of "senders" that are responsible for
shipping the alerts to the external Alertmanager(s). In a nutshell,
this is the Prometheus notifier (the one in charge of sending the alert)
mapped to a multi-tenant map.
There are a few code movements here and there but those are minor, I
tried to keep things intact as much as possible so that we could have an
easier diff.
* add macaron code to the code base
* remove unused secure cookies support from macaron
* clean up modules
* remove com dependency
* fix silly typos
* little cleanup, remove recovery middleware
* remove logger middleware
* remove static handler and remove unused context methods
* bring inject into macaron codebase
* remove unused applicator
* add back macaron license
* more cleanups in macaron code
* remove unused injector Set method
* remove unused context methods: param to int conversion, body helper type, cookie helpers
* remove action from context
* remove complex environment handling, we only use Env variable
* restore ReplaceAllParams to fix the tests
* Alerting: Implement /status for the notification system
Implements the necessary plumbing to have a /status endpoint on the
notification system.
* Add API examples
* Update API specs
* Update prometheus/common dependency
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>