Skip to content

Go: Dynamic fields#910

Draft
spinillos wants to merge 7 commits intomainfrom
go/dynamic-fields
Draft

Go: Dynamic fields#910
spinillos wants to merge 7 commits intomainfrom
go/dynamic-fields

Conversation

@spinillos
Copy link
Copy Markdown
Member

Contributes to #886

It checks if the annotation @cog(open=true) exists to add a map of dynamic fields into a model. It added this for Go now, but we have to implement it in the rest of languages.

This is the same flag that we added in #826.

By default, cue structs are open, but cog was managing them as close. Change this behaviour right now could generate odd effects, so I prefer to use the annotation.

@spinillos spinillos self-assigned this Jan 22, 2026
@spinillos spinillos added enhancement New feature or request go Pull requests that update Go code labels Jan 22, 2026
@spinillos spinillos marked this pull request as draft January 22, 2026 11:30
@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 22, 2026

Note: the diff show code changes that would be introduced by this PR to the output of the config/foundation_sdk.dev.yaml codegen pipeline (dev version of the Foundation SDK).

🔎 Changes to config/foundation_sdk.dev.yaml

diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/alerting/QueryDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/alerting/QueryDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/alerting/QueryDeserializer.java	2026-01-22 17:15:28.687752832 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/alerting/QueryDeserializer.java	2026-01-22 17:14:49.012708472 +0000
@@ -15,10 +15,10 @@
 import com.grafana.foundation.cog.variants.UnknownDataquery;
 import com.grafana.foundation.cog.variants.Registry;
 
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
+import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 import java.util.Map;
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/azuremonitor/BuilderQueryEditorOperatorTypeDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/azuremonitor/BuilderQueryEditorOperatorTypeDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/azuremonitor/BuilderQueryEditorOperatorTypeDeserializer.java	2026-01-22 17:15:28.690752835 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/azuremonitor/BuilderQueryEditorOperatorTypeDeserializer.java	2026-01-22 17:14:49.014708474 +0000
@@ -13,6 +13,12 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
+import com.grafana.foundation.cog.variants.Dataquery;
+import com.grafana.foundation.cog.variants.Registry;
+import com.grafana.foundation.common.DataSourceRef;
+import java.util.List;
+import com.grafana.foundation.cog.variants.PanelConfig;
+import java.util.Map;
 
 public class BuilderQueryEditorOperatorTypeDeserializer extends JsonDeserializer<BuilderQueryEditorOperatorType> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorTypeDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorTypeDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorTypeDeserializer.java	2026-01-22 17:15:28.695752839 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorTypeDeserializer.java	2026-01-22 17:14:49.020708481 +0000
@@ -13,10 +13,12 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
+import java.util.List;
+import com.grafana.foundation.cog.variants.PanelConfig;
+import java.util.Map;
 
 public class QueryEditorOperatorTypeDeserializer extends JsonDeserializer<QueryEditorOperatorType> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorValueTypeDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorValueTypeDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorValueTypeDeserializer.java	2026-01-22 17:15:28.695752839 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorValueTypeDeserializer.java	2026-01-22 17:14:49.020708481 +0000
@@ -13,10 +13,12 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
+import java.util.List;
+import com.grafana.foundation.cog.variants.PanelConfig;
+import java.util.Map;
 
 public class QueryEditorOperatorValueTypeDeserializer extends JsonDeserializer<QueryEditorOperatorValueType> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/StringOrArrayOfStringDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/StringOrArrayOfStringDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/StringOrArrayOfStringDeserializer.java	2026-01-22 17:15:28.696752840 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/StringOrArrayOfStringDeserializer.java	2026-01-22 17:14:49.021708482 +0000
@@ -13,10 +13,12 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
+import java.util.List;
+import com.grafana.foundation.cog.variants.PanelConfig;
+import java.util.Map;
 
 public class StringOrArrayOfStringDeserializer extends JsonDeserializer<StringOrArrayOfString> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/common/BoolOrFloat64Deserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/common/BoolOrFloat64Deserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/common/BoolOrFloat64Deserializer.java	2026-01-22 17:15:28.697752841 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/common/BoolOrFloat64Deserializer.java	2026-01-22 17:14:49.022708483 +0000
@@ -13,7 +13,6 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/PanelDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/PanelDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/PanelDeserializer.java	2026-01-22 17:15:28.703752847 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/PanelDeserializer.java	2026-01-22 17:14:49.028708490 +0000
@@ -15,10 +15,10 @@
 import com.grafana.foundation.cog.variants.UnknownDataquery;
 import com.grafana.foundation.cog.variants.Registry;
 
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
+import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrArrayOfStringDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrArrayOfStringDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrArrayOfStringDeserializer.java	2026-01-22 17:15:28.704752848 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrArrayOfStringDeserializer.java	2026-01-22 17:14:49.028708490 +0000
@@ -13,10 +13,10 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
+import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 import java.util.Map;
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrMapDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrMapDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrMapDeserializer.java	2026-01-22 17:15:28.704752848 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrMapDeserializer.java	2026-01-22 17:14:49.028708490 +0000
@@ -13,10 +13,10 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
+import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 import java.util.Map;
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/StringOrArrayOfStringDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/StringOrArrayOfStringDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/StringOrArrayOfStringDeserializer.java	2026-01-22 17:15:28.711752855 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/StringOrArrayOfStringDeserializer.java	2026-01-22 17:14:49.036708499 +0000
@@ -13,12 +13,10 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
-import com.grafana.foundation.cog.variants.PanelConfig;
-import java.util.Map;
+import java.util.List;
 
 public class StringOrArrayOfStringDeserializer extends JsonDeserializer<StringOrArrayOfString> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/StringOrFloat64Deserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/StringOrFloat64Deserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/StringOrFloat64Deserializer.java	2026-01-22 17:15:28.711752855 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/StringOrFloat64Deserializer.java	2026-01-22 17:14:49.036708499 +0000
@@ -13,12 +13,10 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
-import com.grafana.foundation.cog.variants.PanelConfig;
-import java.util.Map;
+import java.util.List;
 
 public class StringOrFloat64Deserializer extends JsonDeserializer<StringOrFloat64> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/VariableValueDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/VariableValueDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/VariableValueDeserializer.java	2026-01-22 17:15:28.713752857 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/VariableValueDeserializer.java	2026-01-22 17:14:49.038708501 +0000
@@ -13,12 +13,10 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
-import com.grafana.foundation.cog.variants.PanelConfig;
-import java.util.Map;
+import java.util.List;
 
 public class VariableValueDeserializer extends JsonDeserializer<VariableValue> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/VariableValueSingleDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/VariableValueSingleDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/VariableValueSingleDeserializer.java	2026-01-22 17:15:28.714752858 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboardv2beta1/VariableValueSingleDeserializer.java	2026-01-22 17:14:49.038708501 +0000
@@ -13,12 +13,10 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
-import com.grafana.foundation.cog.variants.PanelConfig;
-import java.util.Map;
+import java.util.List;
 
 public class VariableValueSingleDeserializer extends JsonDeserializer<VariableValueSingle> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/elasticsearch/InlineScriptDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/elasticsearch/InlineScriptDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/elasticsearch/InlineScriptDeserializer.java	2026-01-22 17:15:28.718752861 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/elasticsearch/InlineScriptDeserializer.java	2026-01-22 17:14:49.043708507 +0000
@@ -13,10 +13,12 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
+import java.util.List;
+import com.grafana.foundation.cog.variants.PanelConfig;
+import java.util.Map;
 
 public class InlineScriptDeserializer extends JsonDeserializer<InlineScript> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/librarypanel/PanelModelDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/librarypanel/PanelModelDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/librarypanel/PanelModelDeserializer.java	2026-01-22 17:15:28.727752870 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/librarypanel/PanelModelDeserializer.java	2026-01-22 17:14:49.051708516 +0000
@@ -15,7 +15,6 @@
 import com.grafana.foundation.cog.variants.UnknownDataquery;
 import com.grafana.foundation.cog.variants.Registry;
 
-import java.util.List;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
 import com.grafana.foundation.common.DataSourceRef;
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/tempo/StringOrArrayOfStringDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/tempo/StringOrArrayOfStringDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/tempo/StringOrArrayOfStringDeserializer.java	2026-01-22 17:15:28.730752873 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/tempo/StringOrArrayOfStringDeserializer.java	2026-01-22 17:14:49.055708521 +0000
@@ -13,7 +13,12 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
+import com.grafana.foundation.cog.variants.Dataquery;
+import com.grafana.foundation.cog.variants.Registry;
+import com.grafana.foundation.common.DataSourceRef;
 import java.util.List;
+import com.grafana.foundation.cog.variants.PanelConfig;
+import java.util.Map;
 
 public class StringOrArrayOfStringDeserializer extends JsonDeserializer<StringOrArrayOfString> {
 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request go Pull requests that update Go code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant