feat: add ability to parse promql with grafana templates inside#15
Open
com30n wants to merge 1 commit intopabluk:masterfrom
Open
feat: add ability to parse promql with grafana templates inside#15com30n wants to merge 1 commit intopabluk:masterfrom
com30n wants to merge 1 commit intopabluk:masterfrom
Conversation
Owner
|
Hi @com30n, sorry for the late reply and thanks for your contribution! It's an interesting use case, and it could be great to have support for that kind of expressions from Grafana. |
pabluk
requested changes
Nov 23, 2022
| (r"and|or|unless", Operator.Word), | ||
| # Metrics | ||
| (r"[_a-zA-Z][_a-zA-Z0-9]+", Name.Variable), | ||
| (r"[_a-zA-Z][_a-zA-Z0-9]+(\$\{?[_a-zA-Z0-9]*\})?[_a-zA-Z0-9]*", Name.Variable), |
Owner
There was a problem hiding this comment.
It could be better to implement this specific rules creating a subclass of PromQLLexer, something like:
class PromQLGrafanaLexer(PromQLLexer):
name = "PromQLGrafana"
aliases = ["promqlgrafana"]
filenames = ["*.promql"]
# only overwriting the needed tokens
tokens["root"] = {...} # new rules for Grafana
...and adding the class to:
__all__ = ["PromQLLexer", "PromQLGrafanaLexer"]that will allow to choose a specific lexer to users only wanting pure promql or Grafana one.
Owner
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hello!
I'm writing a script, which can download grafana dashboard, patch promql expressions (add some labels, rename labels, etc),
and push it back to grafana.
For parsing promql I'm using the lexer, and while doing some tests I faced the problem:
at some dashboards promql expressions contain grafana templates.
here is an example of the expression:
vault_route_create_${mountpoint}_{quantile="0.99"}and it made a problem while parsing it, because the Metrics regex doesn't contain an expression to parse strings inside
${}symbols.So, the little fix adds the ability to parse promql expressions that contain grafana templates inside.
P.S. While making the changes I found that the tests is not using local PromQLLexer class, so I added a new test, which is testing the new changes, with new test cases.