Skip to content

Commit df7a3c5

Browse files
committed
Fix NewConfigFrom to handle maps.
1 parent c62de28 commit df7a3c5

1 file changed

Lines changed: 19 additions & 12 deletions

File tree

x-pack/elastic-agent/pkg/config/config.go

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,39 +71,46 @@ func NewConfigFrom(from interface{}, opts ...interface{}) (*Config, error) {
7171
o(local)
7272
}
7373

74-
var data []byte
74+
var data map[string]interface{}
7575
var err error
7676
if bytes, ok := from.([]byte); ok {
77-
data = bytes
77+
err = yaml.Unmarshal(bytes, &data)
78+
if err != nil {
79+
return nil, err
80+
}
7881
} else if str, ok := from.(string); ok {
79-
data = []byte(str)
82+
err = yaml.Unmarshal([]byte(str), &data)
83+
if err != nil {
84+
return nil, err
85+
}
8086
} else if in, ok := from.(io.Reader); ok {
8187
if closer, ok := from.(io.Closer); ok {
8288
defer closer.Close()
8389
}
84-
data, err = ioutil.ReadAll(in)
90+
fData, err := ioutil.ReadAll(in)
8591
if err != nil {
8692
return nil, err
8793
}
94+
err = yaml.Unmarshal(fData, &data)
95+
if err != nil {
96+
return nil, err
97+
}
98+
} else if contents, ok := from.(map[string]interface{}); ok {
99+
data = contents
88100
} else {
89101
c, err := ucfg.NewFrom(from, ucfgOpts...)
90102
return newConfigFrom(c), err
91103
}
92104

93-
var c map[string]interface{}
94-
err = yaml.Unmarshal(data, &c)
95-
if err != nil {
96-
return nil, err
97-
}
98105
skippedKeys := map[string]interface{}{}
99106
for _, skip := range local.skipKeys {
100-
val, ok := c[skip]
107+
val, ok := data[skip]
101108
if ok {
102109
skippedKeys[skip] = val
103-
delete(c, skip)
110+
delete(data, skip)
104111
}
105112
}
106-
cfg, err := ucfg.NewFrom(c, ucfgOpts...)
113+
cfg, err := ucfg.NewFrom(data, ucfgOpts...)
107114
if err != nil {
108115
return nil, err
109116
}

0 commit comments

Comments
 (0)