master
go 61 lines 1.98 KB
Raw
1 // Unless explicitly stated otherwise all files in this repository are licensed
2 // under the Apache License Version 2.0.
3 // This product includes software developed at Datadog (https://www.datadoghq.com/).
4 // Copyright 2023-present Datadog, Inc.
5
6 package ddprofiledefinition
7
8 // MetadataDeviceResource is the device resource name
9 const MetadataDeviceResource = "device"
10
11 // MetadataConfig holds configs per resource type
12 type MetadataConfig map[string]MetadataResourceConfig
13
14 // Clone duplicates this MetadataConfig
15 func (mc MetadataConfig) Clone() MetadataConfig {
16 return cloneMap(mc)
17 }
18
19 // MetadataResourceConfig holds configs for a metadata resource
20 type MetadataResourceConfig struct {
21 Fields map[string]MetadataField `yaml:"fields" json:"fields"`
22 IDTags MetricTagConfigList `yaml:"id_tags,omitempty" json:"id_tags,omitempty"`
23 }
24
25 // Clone duplicates this MetadataResourceConfig
26 func (c MetadataResourceConfig) Clone() MetadataResourceConfig {
27 return MetadataResourceConfig{
28 Fields: cloneMap(c.Fields),
29 IDTags: cloneSlice(c.IDTags),
30 }
31 }
32
33 // MetadataField holds configs for a metadata field
34 type MetadataField struct {
35 Symbol SymbolConfig `yaml:"symbol,omitempty" json:"symbol"`
36 Symbols []SymbolConfig `yaml:"symbols,omitempty" json:"symbols,omitempty"`
37 Value string `yaml:"value,omitempty" json:"value,omitempty"`
38 Consumers ConsumerSet `yaml:"consumers,omitempty" json:"consumers,omitempty"`
39 }
40
41 // Clone duplicates this MetadataField
42 func (c MetadataField) Clone() MetadataField {
43 return MetadataField{
44 Symbol: c.Symbol.Clone(),
45 Symbols: cloneSlice(c.Symbols),
46 Value: c.Value,
47 Consumers: c.Consumers.Clone(),
48 }
49 }
50
51 type SysobjectIDMetadataEntryConfig struct {
52 SysobjectID string `yaml:"sysobjectid"`
53 Metadata map[string]MetadataField `yaml:"metadata"`
54 }
55
56 func (e SysobjectIDMetadataEntryConfig) Clone() SysobjectIDMetadataEntryConfig {
57 return SysobjectIDMetadataEntryConfig{
58 SysobjectID: e.SysobjectID,
59 Metadata: cloneMap(e.Metadata),
60 }
61 }