mirror of https://github.com/grafana/grafana
Chore: Add semconv package (#91408)
parent
0145b0fe70
commit
5376a2eb93
@ -0,0 +1,18 @@ |
|||||||
|
.PHONY: all |
||||||
|
all: go markdown |
||||||
|
|
||||||
|
.PHONY: go |
||||||
|
go: |
||||||
|
@docker run --rm -u 1000:1000 -v./model:/tmp/grafana/model -v./:/tmp/grafana/output -v./templates:/tmp/grafana/templates \
|
||||||
|
otel/semconvgen --yaml-root "/tmp/grafana/model/" \
|
||||||
|
code --template "/tmp/grafana/templates/template.j2" \
|
||||||
|
--output "/tmp/grafana/output/attributes.go"
|
||||||
|
@go fmt
|
||||||
|
|
||||||
|
.PHONY: markdown |
||||||
|
markdown: |
||||||
|
@docker run --rm -u 1000:1000 -v./model:/tmp/grafana/model -v./:/tmp/grafana/output -v./templates:/tmp/grafana/templates \
|
||||||
|
otel/semconvgen --yaml-root "/tmp/grafana/model/" \
|
||||||
|
markdown --markdown-root "/tmp/grafana/output/"
|
||||||
|
@npx --yes -- markdown-toc --bullets "-" --no-first-h1 --no-stripHeadingTags -i README.md || exit 1
|
||||||
|
|
@ -0,0 +1,50 @@ |
|||||||
|
# Grafana OpenTelemetry Semantic Conventions |
||||||
|
|
||||||
|
<!-- toc --> |
||||||
|
|
||||||
|
- [Adding new attributes](#adding-new-attributes) |
||||||
|
- [Attribute Groups](#attribute-groups) |
||||||
|
- [grafana.datasource](#grafanadatasource) |
||||||
|
- [grafana.datasource.request](#grafanadatasourcerequest) |
||||||
|
- [grafana.plugin](#grafanaplugin) |
||||||
|
|
||||||
|
<!-- tocstop --> |
||||||
|
|
||||||
|
## Adding new attributes |
||||||
|
|
||||||
|
1. Add a new attribute to a new or existing attribute group in [model/registry](./model/registry). |
||||||
|
1. Add a reference to the new attribute in a new or existing attribute group in [model/trace](./model/trace). |
||||||
|
1. If you are adding a new attribute group, add a new `semconv` HTML comment tag to the README.md file with the name of the new attribute group. |
||||||
|
1. Run `make all` to update the generated files. |
||||||
|
|
||||||
|
For more information: |
||||||
|
- [Semantic Convention generator + Docker](https://github.com/open-telemetry/build-tools/blob/main/semantic-conventions/README.md) |
||||||
|
- [OpenTelemetry Semantic Conventions](https://github.com/open-telemetry/semantic-conventions/tree/main/model) (these can be used as a reference) |
||||||
|
|
||||||
|
## Attribute Groups |
||||||
|
|
||||||
|
### grafana.datasource |
||||||
|
<!-- semconv trace.grafana.datasource --> |
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |
||||||
|
|---|---|---|---|---|---| |
||||||
|
| `grafana.datasource.type` | string | The datasource type. | `prometheus`; `loki`; `grafana-github-datasource` | `Recommended` |  | |
||||||
|
| `grafana.datasource.uid` | string | The datasource unique identifier. | `abcdefg-123456` | `Recommended` |  | |
||||||
|
<!-- endsemconv --> |
||||||
|
|
||||||
|
#### grafana.datasource.request |
||||||
|
|
||||||
|
<!-- semconv trace.grafana.datasource.request --> |
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |
||||||
|
|---|---|---|---|---|---| |
||||||
|
| `grafana.datasource.request.query_count` | int | The number of queries in the request. | `3` | `Recommended` |  | |
||||||
|
<!-- endsemconv --> |
||||||
|
|
||||||
|
|
||||||
|
### grafana.plugin |
||||||
|
|
||||||
|
<!-- semconv trace.grafana.plugin --> |
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |
||||||
|
|---|---|---|---|---|---| |
||||||
|
| `grafana.plugin.id` | string | The plugin ID. | `prometheus`; `loki`; `grafana-github-datasource` | `Recommended` |  | |
||||||
|
| `grafana.plugin.type` | string | The plugin type. | `datasource` | `Recommended` |  | |
||||||
|
<!-- endsemconv --> |
@ -0,0 +1,103 @@ |
|||||||
|
// Code generated from semantic convention specification. DO NOT EDIT.
|
||||||
|
|
||||||
|
package semconv |
||||||
|
|
||||||
|
import "go.opentelemetry.io/otel/attribute" |
||||||
|
|
||||||
|
// Describes Grafana datasource attributes.
|
||||||
|
const ( |
||||||
|
// GrafanaDatasourceTypeKey is the attribute Key conforming to the
|
||||||
|
// "grafana.datasource.type" semantic conventions. It represents the
|
||||||
|
// datasource type.
|
||||||
|
//
|
||||||
|
// Type: string
|
||||||
|
// RequirementLevel: Optional
|
||||||
|
// Stability: stable
|
||||||
|
// Examples: 'prometheus', 'loki', 'grafana-github-datasource'
|
||||||
|
GrafanaDatasourceTypeKey = attribute.Key("grafana.datasource.type") |
||||||
|
|
||||||
|
// GrafanaDatasourceUidKey is the attribute Key conforming to the
|
||||||
|
// "grafana.datasource.uid" semantic conventions. It represents the
|
||||||
|
// datasource unique identifier.
|
||||||
|
//
|
||||||
|
// Type: string
|
||||||
|
// RequirementLevel: Optional
|
||||||
|
// Stability: stable
|
||||||
|
// Examples: 'abcdefg-123456'
|
||||||
|
GrafanaDatasourceUidKey = attribute.Key("grafana.datasource.uid") |
||||||
|
) |
||||||
|
|
||||||
|
// GrafanaDatasourceType returns an attribute KeyValue conforming to the
|
||||||
|
// "grafana.datasource.type" semantic conventions. It represents the datasource
|
||||||
|
// type.
|
||||||
|
func GrafanaDatasourceType(val string) attribute.KeyValue { |
||||||
|
return GrafanaDatasourceTypeKey.String(val) |
||||||
|
} |
||||||
|
|
||||||
|
// GrafanaDatasourceUid returns an attribute KeyValue conforming to the
|
||||||
|
// "grafana.datasource.uid" semantic conventions. It represents the datasource
|
||||||
|
// unique identifier.
|
||||||
|
func GrafanaDatasourceUid(val string) attribute.KeyValue { |
||||||
|
return GrafanaDatasourceUidKey.String(val) |
||||||
|
} |
||||||
|
|
||||||
|
// Describes Grafana data source request attributes.
|
||||||
|
const ( |
||||||
|
// GrafanaDatasourceRequestQueryCountKey is the attribute Key conforming to
|
||||||
|
// the "grafana.datasource.request.query_count" semantic conventions. It
|
||||||
|
// represents the number of queries in the request.
|
||||||
|
//
|
||||||
|
// Type: int
|
||||||
|
// RequirementLevel: Optional
|
||||||
|
// Stability: stable
|
||||||
|
// Examples: 3
|
||||||
|
GrafanaDatasourceRequestQueryCountKey = attribute.Key("grafana.datasource.request.query_count") |
||||||
|
) |
||||||
|
|
||||||
|
// GrafanaDatasourceRequestQueryCount returns an attribute KeyValue
|
||||||
|
// conforming to the "grafana.datasource.request.query_count" semantic
|
||||||
|
// conventions. It represents the number of queries in the request.
|
||||||
|
func GrafanaDatasourceRequestQueryCount(val int) attribute.KeyValue { |
||||||
|
return GrafanaDatasourceRequestQueryCountKey.Int(val) |
||||||
|
} |
||||||
|
|
||||||
|
// Describes Grafana plugin attributes.
|
||||||
|
const ( |
||||||
|
// GrafanaPluginIdKey is the attribute Key conforming to the
|
||||||
|
// "grafana.plugin.id" semantic conventions. It represents the plugin ID.
|
||||||
|
//
|
||||||
|
// Type: string
|
||||||
|
// RequirementLevel: Optional
|
||||||
|
// Stability: stable
|
||||||
|
// Examples: 'prometheus', 'loki', 'grafana-github-datasource'
|
||||||
|
GrafanaPluginIdKey = attribute.Key("grafana.plugin.id") |
||||||
|
|
||||||
|
// GrafanaPluginTypeKey is the attribute Key conforming to the
|
||||||
|
// "grafana.plugin.type" semantic conventions. It represents the plugin
|
||||||
|
// type.
|
||||||
|
//
|
||||||
|
// Type: Enum
|
||||||
|
// RequirementLevel: Optional
|
||||||
|
// Stability: stable
|
||||||
|
// Examples: 'datasource'
|
||||||
|
GrafanaPluginTypeKey = attribute.Key("grafana.plugin.type") |
||||||
|
) |
||||||
|
|
||||||
|
var ( |
||||||
|
// Data Source Plugin
|
||||||
|
GrafanaPluginTypeDatasource = GrafanaPluginTypeKey.String("datasource") |
||||||
|
// Panel Plugin
|
||||||
|
GrafanaPluginTypePanel = GrafanaPluginTypeKey.String("panel") |
||||||
|
// App Plugin
|
||||||
|
GrafanaPluginTypeApp = GrafanaPluginTypeKey.String("app") |
||||||
|
// Renderer Plugin
|
||||||
|
GrafanaPluginTypeRenderer = GrafanaPluginTypeKey.String("renderer") |
||||||
|
// Secret Manager Plugin
|
||||||
|
GrafanaPluginTypeSecretmanager = GrafanaPluginTypeKey.String("secretmanager") |
||||||
|
) |
||||||
|
|
||||||
|
// GrafanaPluginId returns an attribute KeyValue conforming to the
|
||||||
|
// "grafana.plugin.id" semantic conventions. It represents the plugin ID.
|
||||||
|
func GrafanaPluginId(val string) attribute.KeyValue { |
||||||
|
return GrafanaPluginIdKey.String(val) |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
// Package semconv contains Grafana's OpenTelemetry semantic conventions.
|
||||||
|
//
|
||||||
|
// This package contains the standard attributes that are emitted
|
||||||
|
// by Grafana's OpenTelemetry instrumentation.
|
||||||
|
package semconv // import "github.com/grafana/grafana/pkg/semconv"
|
@ -0,0 +1,10 @@ |
|||||||
|
module github.com/grafana/grafana/pkg/semconv |
||||||
|
|
||||||
|
go 1.22.4 |
||||||
|
|
||||||
|
require go.opentelemetry.io/otel v1.28.0 |
||||||
|
|
||||||
|
require ( |
||||||
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect |
||||||
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect |
||||||
|
) |
@ -0,0 +1,12 @@ |
|||||||
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= |
||||||
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= |
||||||
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= |
||||||
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= |
||||||
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= |
||||||
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= |
||||||
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= |
||||||
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= |
||||||
|
go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= |
||||||
|
go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= |
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= |
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
@ -0,0 +1,29 @@ |
|||||||
|
groups: |
||||||
|
- id: registry.grafana.datasource |
||||||
|
type: attribute_group |
||||||
|
display_name: Grafana Data Source Attributes |
||||||
|
brief: "Describes Grafana datasource attributes." |
||||||
|
attributes: |
||||||
|
- id: grafana.datasource.type |
||||||
|
type: string |
||||||
|
brief: The datasource type. |
||||||
|
examples: |
||||||
|
- "prometheus" |
||||||
|
- "loki" |
||||||
|
- "grafana-github-datasource" |
||||||
|
stability: stable |
||||||
|
- id: grafana.datasource.uid |
||||||
|
type: string |
||||||
|
brief: The datasource unique identifier. |
||||||
|
examples: abcdefg-123456 |
||||||
|
stability: stable |
||||||
|
- id: registry.grafana.datasource.request |
||||||
|
type: attribute_group |
||||||
|
display_name: Grafana Data Source Request Attributes |
||||||
|
brief: "Describes Grafana data source request attributes." |
||||||
|
attributes: |
||||||
|
- id: grafana.datasource.request.query_count |
||||||
|
type: int |
||||||
|
brief: The number of queries in the request. |
||||||
|
examples: 3 |
||||||
|
stability: stable |
@ -0,0 +1,40 @@ |
|||||||
|
groups: |
||||||
|
- id: registry.grafana.plugin |
||||||
|
type: attribute_group |
||||||
|
display_name: Grafana Plugin Attributes |
||||||
|
brief: "Describes Grafana plugin attributes." |
||||||
|
attributes: |
||||||
|
- id: grafana.plugin.id |
||||||
|
type: string |
||||||
|
brief: The plugin ID. |
||||||
|
examples: |
||||||
|
- "prometheus" |
||||||
|
- "loki" |
||||||
|
- "grafana-github-datasource" |
||||||
|
stability: stable |
||||||
|
- id: grafana.plugin.type |
||||||
|
type: |
||||||
|
members: |
||||||
|
- id: datasource |
||||||
|
value: "datasource" |
||||||
|
brief: 'Data Source Plugin' |
||||||
|
stability: stable |
||||||
|
- id: panel |
||||||
|
value: "panel" |
||||||
|
brief: 'Panel Plugin' |
||||||
|
stability: stable |
||||||
|
- id: app |
||||||
|
value: "app" |
||||||
|
brief: 'App Plugin' |
||||||
|
stability: stable |
||||||
|
- id: renderer |
||||||
|
value: "renderer" |
||||||
|
brief: 'Renderer Plugin' |
||||||
|
stability: stable |
||||||
|
- id: secretmanager |
||||||
|
value: "secretmanager" |
||||||
|
brief: 'Secret Manager Plugin' |
||||||
|
stability: stable |
||||||
|
brief: The plugin type. |
||||||
|
examples: datasource |
||||||
|
stability: stable |
@ -0,0 +1,15 @@ |
|||||||
|
groups: |
||||||
|
- id: trace.grafana.datasource |
||||||
|
type: span |
||||||
|
brief: 'Semantic Convention for Grafana datasources' |
||||||
|
stability: stable |
||||||
|
attributes: |
||||||
|
- ref: grafana.datasource.type |
||||||
|
- ref: grafana.datasource.uid |
||||||
|
- id: trace.grafana.datasource.request |
||||||
|
type: span |
||||||
|
span_kind: client |
||||||
|
brief: 'Semantic Convention for Grafana datasource requests' |
||||||
|
stability: stable |
||||||
|
attributes: |
||||||
|
- ref: grafana.datasource.request.query_count |
@ -0,0 +1,8 @@ |
|||||||
|
groups: |
||||||
|
- id: trace.grafana.plugin |
||||||
|
type: span |
||||||
|
brief: 'Semantic Convention for Grafana plugins' |
||||||
|
stability: stable |
||||||
|
attributes: |
||||||
|
- ref: grafana.plugin.id |
||||||
|
- ref: grafana.plugin.type |
@ -0,0 +1,142 @@ |
|||||||
|
{%- macro keyval_method(type) -%} |
||||||
|
{%- if type == "string" -%} |
||||||
|
String |
||||||
|
{%- elif type == "string[]" -%} |
||||||
|
StringSlice |
||||||
|
{%- elif type == "int" -%} |
||||||
|
Int |
||||||
|
{%- elif type == "int[]" -%} |
||||||
|
IntSlice |
||||||
|
{%- elif type == "double" -%} |
||||||
|
Float64 |
||||||
|
{%- elif type == "double[]" -%} |
||||||
|
Float64Slice |
||||||
|
{%- elif type == "boolean" -%} |
||||||
|
Bool |
||||||
|
{%- elif type == "boolean[]" -%} |
||||||
|
BoolSlice |
||||||
|
{%- endif -%} |
||||||
|
{%- endmacro -%} |
||||||
|
{%- macro to_go_attr_type(type, val) -%} |
||||||
|
{{keyval_method(type)}}({% if type == "string" %}"{{val}}"{% else %}{{val}}{% endif %}) |
||||||
|
{%- endmacro -%} |
||||||
|
{%- macro to_go_name(fqn) -%} |
||||||
|
{{fqn | replace(".", " ") | replace("_", " ") | title | replace(" ", "")}} |
||||||
|
{%- endmacro -%} |
||||||
|
{%- macro it_reps(brief) -%} |
||||||
|
It represents {% if brief[:2] == "A " or brief[:3] == "An " or brief[:4] == "The " -%} |
||||||
|
{{ brief[0]|lower }}{{ brief[1:] }} |
||||||
|
{%- else -%} |
||||||
|
the {{ brief[0]|lower }}{{ brief[1:] }} |
||||||
|
{%- endif -%} |
||||||
|
{%- endmacro -%} |
||||||
|
{%- macro keydoc(attr) -%} |
||||||
|
{%- if attr.stability|string() == "StabilityLevel.DEPRECATED" -%} |
||||||
|
{{ to_go_name(attr.fqn) }}Key is the attribute Key conforming to the "{{ attr.fqn }}" semantic conventions. |
||||||
|
{%- else -%} |
||||||
|
{{ to_go_name(attr.fqn) }}Key is the attribute Key conforming to the "{{ attr.fqn }}" semantic conventions. {{ it_reps(attr.brief) }} |
||||||
|
{%- endif %} |
||||||
|
{%- endmacro -%} |
||||||
|
{%- macro keydetails(attr) -%} |
||||||
|
{%- if attr.attr_type is string %} |
||||||
|
Type: {{ attr.attr_type }} |
||||||
|
{%- else %} |
||||||
|
Type: Enum |
||||||
|
{%- endif %} |
||||||
|
{%- if attr.requirement_level == RequirementLevel.REQUIRED %} |
||||||
|
RequirementLevel: Required |
||||||
|
{%- elif attr.requirement_level == RequirementLevel.CONDITIONALLY_REQUIRED %} |
||||||
|
RequirementLevel: ConditionallyRequired |
||||||
|
{%- if attr.requirement_level_msg != "" %} ({{ attr.requirement_level_msg }}){%- endif %} |
||||||
|
{%- elif attr.requirement_level == RequirementLevel.RECOMMENDED %} |
||||||
|
RequirementLevel: Recommended |
||||||
|
{%- if attr.requirement_level_msg != "" %} ({{ attr.requirement_level_msg }}){%- endif %} |
||||||
|
{%- else %} |
||||||
|
RequirementLevel: Optional |
||||||
|
{%- endif %} |
||||||
|
{{ attr.stability | replace("Level.", ": ") | capitalize }} |
||||||
|
{%- if attr.examples is iterable %} |
||||||
|
Examples: {{ attr.examples | pprint | trim("[]") }} |
||||||
|
{%- endif %} |
||||||
|
{%- if attr.note %} |
||||||
|
Note: {{ attr.note }} |
||||||
|
{%- endif %} |
||||||
|
{%- if attr.stability|string() == "StabilityLevel.DEPRECATED" %} |
||||||
|
Deprecated: {{ attr.brief | replace("Deprecated, ", "") }} |
||||||
|
{%- endif %} |
||||||
|
{%- endmacro -%} |
||||||
|
{%- macro fndoc(attr) -%} |
||||||
|
{%- if attr.stability|string() == "StabilityLevel.DEPRECATED" -%} |
||||||
|
// {{ to_go_name(attr.fqn) }} returns an attribute KeyValue conforming to the "{{ attr.fqn }}" semantic conventions. |
||||||
|
|
||||||
|
Deprecated: {{ attr.brief | replace("Deprecated, ", "") }} |
||||||
|
{%- else -%} |
||||||
|
// {{ to_go_name(attr.fqn) }} returns an attribute KeyValue conforming to the "{{ attr.fqn }}" semantic conventions. {{ it_reps(attr.brief) }} |
||||||
|
{%- endif %} |
||||||
|
{%- endmacro -%} |
||||||
|
{%- macro to_go_func(type, name) -%} |
||||||
|
{%- if type == "string" -%} |
||||||
|
func {{name}}(val string) attribute.KeyValue { |
||||||
|
{%- elif type == "string[]" -%} |
||||||
|
func {{name}}(val ...string) attribute.KeyValue { |
||||||
|
{%- elif type == "int" -%} |
||||||
|
func {{name}}(val int) attribute.KeyValue { |
||||||
|
{%- elif type == "int[]" -%} |
||||||
|
func {{name}}(val ...int) attribute.KeyValue { |
||||||
|
{%- elif type == "double" -%} |
||||||
|
func {{name}}(val float64) attribute.KeyValue { |
||||||
|
{%- elif type == "double[]" -%} |
||||||
|
func {{name}}(val ...float64) attribute.KeyValue { |
||||||
|
{%- elif type == "boolean" -%} |
||||||
|
func {{name}}(val bool) attribute.KeyValue { |
||||||
|
{%- elif type == "boolean[]" -%} |
||||||
|
func {{name}}(val ...bool) attribute.KeyValue { |
||||||
|
{%- endif -%} |
||||||
|
return {{name}}Key.{{keyval_method(type)}}(val) |
||||||
|
} |
||||||
|
{%- endmacro -%} |
||||||
|
{%- macro sentence_case(text) -%} |
||||||
|
{{ text[0]|upper}}{{text[1:] }} |
||||||
|
{%- endmacro -%} |
||||||
|
// Code generated from semantic convention specification. DO NOT EDIT. |
||||||
|
|
||||||
|
package semconv |
||||||
|
|
||||||
|
import "go.opentelemetry.io/otel/attribute" |
||||||
|
|
||||||
|
{% for semconv in semconvs -%} |
||||||
|
{%- if semconvs[semconv].attributes | rejectattr("ref") | rejectattr("deprecated") | selectattr("is_local") | sort(attribute=fqn) | length > 0 -%} |
||||||
|
// {{ sentence_case(semconvs[semconv].brief | replace("This document defines ", "")) | wordwrap(76, break_long_words=false, break_on_hyphens=false, wrapstring="\n// ") }} |
||||||
|
const ( |
||||||
|
{%- for attr in semconvs[semconv].attributes if attr.is_local and not attr.ref and not attr.deprecated %} |
||||||
|
// {{ keydoc(attr) | wordwrap(72, break_long_words=false, break_on_hyphens=false, wrapstring="\n\t// ") }} |
||||||
|
// {{ keydetails(attr) | wordwrap(72, break_long_words=false, break_on_hyphens=false, wrapstring="\n\t// ") }} |
||||||
|
{{to_go_name(attr.fqn)}}Key = attribute.Key("{{attr.fqn}}") |
||||||
|
{% endfor -%} |
||||||
|
) |
||||||
|
{%- for attr in semconvs[semconv].attributes if attr.is_local and not attr.ref and not attr.deprecated -%} |
||||||
|
{%- if attr.attr_type is not string %} |
||||||
|
|
||||||
|
var ( |
||||||
|
{%- for val in attr.attr_type.members %} |
||||||
|
// {{ val.brief | to_doc_brief }} |
||||||
|
{%- if attr.stability|string() == "StabilityLevel.DEPRECATED" %} |
||||||
|
// |
||||||
|
// Deprecated: {{ attr.brief | replace("Deprecated, ", "") | wordwrap(76, break_long_words=false, break_on_hyphens=false, wrapstring="\n// ") }} |
||||||
|
{%- endif %} |
||||||
|
{{to_go_name("{}.{}".format(attr.fqn, val.member_id))}} = {{to_go_name(attr.fqn)}}Key.{{to_go_attr_type(attr.attr_type.enum_type, val.value)}} |
||||||
|
{%- endfor %} |
||||||
|
) |
||||||
|
{%- endif -%} |
||||||
|
{%- endfor %} |
||||||
|
{%- for attr in semconvs[semconv].attributes if attr.is_local and not attr.ref and not attr.deprecated -%} |
||||||
|
{%- if attr.attr_type is string %} |
||||||
|
|
||||||
|
{{ fndoc(attr) | wordwrap(76, break_long_words=false, break_on_hyphens=false, wrapstring="\n// ") }} |
||||||
|
{{to_go_func(attr.attr_type, to_go_name(attr.fqn))}} |
||||||
|
{%- endif -%} |
||||||
|
{%- endfor %} |
||||||
|
|
||||||
|
{% endif %} |
||||||
|
{% endfor -%} |
||||||
|
|
Loading…
Reference in new issue