grafana / cog

Code Generation with a human touch
Apache License 2.0
43 stars 2 forks source link

Cleanup template-related utilities and helpers #540

Closed K-Phoen closed 2 weeks ago

K-Phoen commented 2 weeks ago

This PR simplifies the way we use templates and helpers, mainly to simplify setting them up and having to rely on two different packages when working with templates (the go templates package, and our helper package).

Instead, we now have a small "template abstraction" that fits our needs.

github-actions[bot] commented 2 weeks ago

Note: in addition to the changes introduced by this PR, the diff includes unreleased changes living in main.

### 🔎 Changes to `grafana-foundation-sdk@next+cog-v0.0.x` ```patch diff --git a/java/gradle.properties b/java/gradle.properties index 68bbabc..58cecaf 100644 --- a/java/gradle.properties +++ b/java/gradle.properties @@ -1 +1 @@ -grafanaFoundationSDKVersion=next-1725620594 +grafanaFoundationSDKVersion=next-1726058338 diff --git a/php/src/Azuremonitor/AzureMonitorQuery.php b/php/src/Azuremonitor/AzureMonitorQuery.php index 819dbef..ebc57cd 100644 --- a/php/src/Azuremonitor/AzureMonitorQuery.php +++ b/php/src/Azuremonitor/AzureMonitorQuery.php @@ -159,26 +159,26 @@ class AzureMonitorQuery implements \JsonSerializable, \Grafana\Foundation\Cog\Da \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["kind"]) { - case "MetricNamespaceQuery": - return MetricNamespaceQuery::fromArray($input); + case "SubscriptionsQuery": + return SubscriptionsQuery::fromArray($input); + case "WorkspacesQuery": + return WorkspacesQuery::fromArray($input); + case "MetricDefinitionsQuery": + return MetricDefinitionsQuery::fromArray($input); + case "ResourceNamesQuery": + return ResourceNamesQuery::fromArray($input); case "MetricNamesQuery": return MetricNamesQuery::fromArray($input); case "UnknownQuery": return UnknownQuery::fromArray($input); + case "AppInsightsMetricNameQuery": + return AppInsightsMetricNameQuery::fromArray($input); case "ResourceGroupsQuery": return ResourceGroupsQuery::fromArray($input); + case "MetricNamespaceQuery": + return MetricNamespaceQuery::fromArray($input); case "AppInsightsGroupByQuery": return AppInsightsGroupByQuery::fromArray($input); - case "SubscriptionsQuery": - return SubscriptionsQuery::fromArray($input); - case "ResourceNamesQuery": - return ResourceNamesQuery::fromArray($input); - case "MetricDefinitionsQuery": - return MetricDefinitionsQuery::fromArray($input); - case "WorkspacesQuery": - return WorkspacesQuery::fromArray($input); - case "AppInsightsMetricNameQuery": - return AppInsightsMetricNameQuery::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Cloudwatch/QueryEditorArrayExpression.php b/php/src/Cloudwatch/QueryEditorArrayExpression.php index 3a87b04..c359e91 100644 --- a/php/src/Cloudwatch/QueryEditorArrayExpression.php +++ b/php/src/Cloudwatch/QueryEditorArrayExpression.php @@ -34,12 +34,6 @@ class QueryEditorArrayExpression implements \JsonSerializable \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { - case "operator": - return QueryEditorOperatorExpression::fromArray($input); - case "and": - return QueryEditorArrayExpression::fromArray($input); - case "or": - return QueryEditorArrayExpression::fromArray($input); case "property": return QueryEditorPropertyExpression::fromArray($input); case "groupBy": @@ -48,6 +42,12 @@ class QueryEditorArrayExpression implements \JsonSerializable return QueryEditorFunctionExpression::fromArray($input); case "functionParameter": return QueryEditorFunctionParameterExpression::fromArray($input); + case "operator": + return QueryEditorOperatorExpression::fromArray($input); + case "and": + return QueryEditorArrayExpression::fromArray($input); + case "or": + return QueryEditorArrayExpression::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Cloudwatch/VariantConfig.php b/php/src/Cloudwatch/VariantConfig.php index 54991a9..e8860cc 100644 --- a/php/src/Cloudwatch/VariantConfig.php +++ b/php/src/Cloudwatch/VariantConfig.php @@ -12,12 +12,12 @@ final class VariantConfig \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["queryMode"]) { - case "Metrics": - return CloudWatchMetricsQuery::fromArray($input); case "Logs": return CloudWatchLogsQuery::fromArray($input); case "Annotations": return CloudWatchAnnotationQuery::fromArray($input); + case "Metrics": + return CloudWatchMetricsQuery::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Common/TableFieldOptions.php b/php/src/Common/TableFieldOptions.php index a4cae59..dedd305 100644 --- a/php/src/Common/TableFieldOptions.php +++ b/php/src/Common/TableFieldOptions.php @@ -78,12 +78,6 @@ class TableFieldOptions implements \JsonSerializable \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { - case "sparkline": - return TableSparklineCellOptions::fromArray($input); - case "gauge": - return TableBarGaugeCellOptions::fromArray($input); - case "color-background": - return TableColoredBackgroundCellOptions::fromArray($input); case "color-text": return TableColorTextCellOptions::fromArray($input); case "image": @@ -94,6 +88,12 @@ class TableFieldOptions implements \JsonSerializable return TableJsonViewCellOptions::fromArray($input); case "auto": return TableAutoCellOptions::fromArray($input); + case "sparkline": + return TableSparklineCellOptions::fromArray($input); + case "gauge": + return TableBarGaugeCellOptions::fromArray($input); + case "color-background": + return TableColoredBackgroundCellOptions::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Dashboard/FieldConfig.php b/php/src/Dashboard/FieldConfig.php index a02d949..b960b65 100644 --- a/php/src/Dashboard/FieldConfig.php +++ b/php/src/Dashboard/FieldConfig.php @@ -170,14 +170,14 @@ class FieldConfig implements \JsonSerializable \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { - case "regex": - return RegexMap::fromArray($input); case "special": return SpecialValueMap::fromArray($input); case "value": return ValueMap::fromArray($input); case "range": return RangeMap::fromArray($input); + case "regex": + return RegexMap::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Elasticsearch/Dataquery.php b/php/src/Elasticsearch/Dataquery.php index e3dd120..efc4aae 100644 --- a/php/src/Elasticsearch/Dataquery.php +++ b/php/src/Elasticsearch/Dataquery.php @@ -97,10 +97,6 @@ class Dataquery implements \JsonSerializable, \Grafana\Foundation\Cog\Dataquery \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { - case "histogram": - return Histogram::fromArray($input); - case "terms": - return Terms::fromArray($input); case "filters": return Filters::fromArray($input); case "geohash_grid": @@ -109,6 +105,10 @@ class Dataquery implements \JsonSerializable, \Grafana\Foundation\Cog\Dataquery return Nested::fromArray($input); case "date_histogram": return DateHistogram::fromArray($input); + case "histogram": + return Histogram::fromArray($input); + case "terms": + return Terms::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } @@ -117,44 +117,44 @@ class Dataquery implements \JsonSerializable, \Grafana\Foundation\Cog\Dataquery \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { - case "percentiles": - return Percentiles::fromArray($input); - case "cumulative_sum": - return CumulativeSum::fromArray($input); - case "extended_stats": - return ExtendedStats::fromArray($input); - case "sum": - return Sum::fromArray($input); - case "count": - return Count::fromArray($input); - case "rate": - return Rate::fromArray($input); - case "bucket_script": - return BucketScript::fromArray($input); - case "moving_fn": - return MovingFunction::fromArray($input); case "logs": return Logs::fromArray($input); - case "top_metrics": - return TopMetrics::fromArray($input); case "serial_diff": return SerialDiff::fromArray($input); + case "bucket_script": + return BucketScript::fromArray($input); + case "rate": + return Rate::fromArray($input); case "min": return Min::fromArray($input); - case "derivative": - return Derivative::fromArray($input); - case "max": - return Max::fromArray($input); - case "avg": - return Average::fromArray($input); + case "extended_stats": + return ExtendedStats::fromArray($input); + case "count": + return Count::fromArray($input); case "raw_data": return RawData::fromArray($input); + case "sum": + return Sum::fromArray($input); case "raw_document": return RawDocument::fromArray($input); + case "percentiles": + return Percentiles::fromArray($input); case "cardinality": return UniqueCount::fromArray($input); + case "top_metrics": + return TopMetrics::fromArray($input); + case "max": + return Max::fromArray($input); + case "avg": + return Average::fromArray($input); + case "cumulative_sum": + return CumulativeSum::fromArray($input); case "moving_avg": return MovingAverage::fromArray($input); + case "moving_fn": + return MovingFunction::fromArray($input); + case "derivative": + return Derivative::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Expr/VariantConfig.php b/php/src/Expr/VariantConfig.php index 9ca27eb..710d51e 100644 --- a/php/src/Expr/VariantConfig.php +++ b/php/src/Expr/VariantConfig.php @@ -12,8 +12,6 @@ final class VariantConfig \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { - case "reduce": - return TypeReduce::fromArray($input); case "resample": return TypeResample::fromArray($input); case "classic_conditions": @@ -24,6 +22,8 @@ final class VariantConfig return TypeSql::fromArray($input); case "math": return TypeMath::fromArray($input); + case "reduce": + return TypeReduce::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Rolebinding/RoleBinding.php b/php/src/Rolebinding/RoleBinding.php index 910b987..1dfddca 100644 --- a/php/src/Rolebinding/RoleBinding.php +++ b/php/src/Rolebinding/RoleBinding.php @@ -37,10 +37,10 @@ class RoleBinding implements \JsonSerializable \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["kind"]) { - case "BuiltinRole": - return BuiltinRoleRef::fromArray($input); case "Role": return CustomRoleRef::fromArray($input); + case "BuiltinRole": + return BuiltinRoleRef::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/python/grafana_foundation_sdk/cog/plugins.py b/python/grafana_foundation_sdk/cog/plugins.py index 039c61c..2231205 100644 --- a/python/grafana_foundation_sdk/cog/plugins.py +++ b/python/grafana_foundation_sdk/cog/plugins.py @@ -1,39 +1,39 @@ # Code generated - EDITING IS FUTILE. DO NOT EDIT. -from ..models import grafanapyroscope from ..models import piechart -from ..models import table from ..models import statetimeline -from ..models import stat from ..models import tempo -from ..models import expr -from ..models import candlestick -from ..models import logs +from ..models import canvas +from ..models import cloudwatch from ..models import debug -from ..models import gauge +from ..models import text +from ..models import trend +from ..models import expr from ..models import news from ..models import nodegraph from ..models import statushistory -from ..models import prometheus -from ..models import dashboardlist -from ..models import timeseries -from ..models import xychart -from ..models import annotationslist -from ..models import histogram -from ..models import canvas -from ..models import geomap -from ..models import text -from ..models import trend from ..models import azuremonitor -from ..models import barchart +from ..models import bargauge +from ..models import logs from ..models import loki +from ..models import table +from ..models import dashboardlist +from ..models import gauge from ..models import parca -from ..models import datagrid -from ..models import bargauge -from ..models import cloudwatch +from ..models import stat +from ..models import barchart +from ..models import grafanapyroscope +from ..models import xychart +from ..models import annotationslist +from ..models import prometheus +from ..models import candlestick +from ..models import heatmap +from ..models import timeseries from ..models import elasticsearch +from ..models import datagrid +from ..models import geomap from ..models import googlecloudmonitoring -from ..models import heatmap +from ..models import histogram from . import runtime as cogruntime diff --git a/python/grafana_foundation_sdk/models/expr.py b/python/grafana_foundation_sdk/models/expr.py index de1ce61..6202638 100644 --- a/python/grafana_foundation_sdk/models/expr.py +++ b/python/grafana_foundation_sdk/models/expr.py @@ -9,7 +9,7 @@ Expr: typing.TypeAlias = typing.Union['TypeMath', 'TypeReduce', 'TypeResample', def variant_config() -> cogruntime.DataqueryConfig: - decoding_map: dict[str, typing.Union[typing.Type[TypeThreshold], typing.Type[TypeSql], typing.Type[TypeMath], typing.Type[TypeReduce], typing.Type[TypeResample], typing.Type[TypeClassicConditions]]] = {"threshold": TypeThreshold, "sql": TypeSql, "math": TypeMath, "reduce": TypeReduce, "resample": TypeResample, "classic_conditions": TypeClassicConditions} + decoding_map: dict[str, typing.Union[typing.Type[TypeReduce], typing.Type[TypeResample], typing.Type[TypeClassicConditions], typing.Type[TypeThreshold], typing.Type[TypeSql], typing.Type[TypeMath]]] = {"reduce": TypeReduce, "resample": TypeResample, "classic_conditions": TypeClassicConditions, "threshold": TypeThreshold, "sql": TypeSql, "math": TypeMath} return cogruntime.DataqueryConfig( identifier="__expr__", from_json_hook=lambda data: decoding_map[data["type"]].from_json(data), diff --git a/python/grafana_foundation_sdk/models/rolebinding.py b/python/grafana_foundation_sdk/models/rolebinding.py index e8f302c..eafa911 100644 --- a/python/grafana_foundation_sdk/models/rolebinding.py +++ b/python/grafana_foundation_sdk/models/rolebinding.py @@ -25,7 +25,7 @@ class RoleBinding: args: dict[str, typing.Any] = {} if "role" in data: - decoding_map: dict[str, typing.Union[typing.Type[BuiltinRoleRef], typing.Type[CustomRoleRef]]] = {"BuiltinRole": BuiltinRoleRef, "Role": CustomRoleRef} + decoding_map: dict[str, typing.Union[typing.Type[CustomRoleRef], typing.Type[BuiltinRoleRef]]] = {"Role": CustomRoleRef, "BuiltinRole": BuiltinRoleRef} args["role"] = decoding_map[data["role"]["kind"]].from_json(data["role"]) if "subject" in data: args["subject"] = RoleBindingSubject.from_json(data["subject"]) diff --git a/python/pyproject.toml b/python/pyproject.toml index d650f3b..4d7f5ab 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -13,7 +13,7 @@ keywords = [ "traces", "metrics" ] -version = "1725620594!next" +version = "1726058338!next" dependencies = [] requires-python = ">=3.11" classifiers = [ diff --git a/typescript/package.json b/typescript/package.json index e8a7368..716b475 100644 --- a/typescript/package.json +++ b/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@grafana/grafana-foundation-sdk", - "version": "next-cogv0.0.x.1725620594", + "version": "next-cogv0.0.x.1726058338", "description": "A set of tools, types and libraries for building and manipulating Grafana objects.", "keywords": [ "observability", ```