-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
profile_initconfig.go
41 lines (35 loc) · 1.35 KB
/
profile_initconfig.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Unless explicitly stated otherwise all files in this repository are licensed
// under the Apache License Version 2.0.
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2016-present Datadog, Inc.
package profile
import "github.com/DataDog/datadog-agent/pkg/util/log"
func loadInitConfigProfiles(rawInitConfigProfiles ProfileConfigMap) (ProfileConfigMap, error) {
initConfigProfiles := make(ProfileConfigMap, len(rawInitConfigProfiles))
for name, profConfig := range rawInitConfigProfiles {
if profConfig.DefinitionFile != "" {
profDefinition, err := readProfileDefinition(profConfig.DefinitionFile)
if err != nil {
log.Warnf("unable to load profile %q: %s", name, err)
continue
}
profConfig.Definition = *profDefinition
}
initConfigProfiles[name] = profConfig
}
userProfiles := mergeProfiles(getYamlUserProfiles(), initConfigProfiles)
resolvedProfiles, err := resolveProfiles(userProfiles, getYamlDefaultProfiles())
if err != nil {
return nil, err
}
// When user profiles are from initConfigProfiles
// only profiles listed in initConfigProfiles are returned
filteredResolvedProfiles := ProfileConfigMap{}
for key, val := range resolvedProfiles {
if _, ok := initConfigProfiles[key]; !ok {
continue
}
filteredResolvedProfiles[key] = val
}
return filteredResolvedProfiles, nil
}