in pkg/systemstatsmonitor/osfeature_collector.go [97:142]
func (ofc *osFeatureCollector) recordFeaturesFromModules(modules []system.Module) {
// Collect known modules (default modules based on guest OS present in known-modules.json)
var knownModules []system.Module
f, err := ioutil.ReadFile(ofc.config.KnownModulesConfigPath)
if err != nil {
glog.Warningf("Failed to read configuration file %s: %v",
ofc.config.KnownModulesConfigPath, err)
}
// When the knownModulesConfigPath is not set
// it should assume all the metrics are assumed to be default modules.
if f != nil {
err = json.Unmarshal(f, &knownModules)
if err != nil {
glog.Warningf("Failed to retrieve known modules %v", err)
}
} else {
knownModules = []system.Module{}
}
var hasGPUSupport = 0
unknownModules := []string{}
// Collect UnknownModules and check GPUSupport
for _, module := range modules {
// if the module has nvidia modules, then the hasGPUSupport is set.
if strings.Contains(module.ModuleName, "nvidia") {
hasGPUSupport = 1
} else {
if module.OutOfTree || module.Proprietary {
if !system.ContainsModule(module.ModuleName, knownModules) {
unknownModules = append(unknownModules, module.ModuleName)
}
}
}
}
// record the UnknownModules and GPUSupport
if len(unknownModules) > 0 {
ofc.osFeature.Record(map[string]string{featureLabel: "UnknownModules",
valueLabel: strings.Join(unknownModules, ",")}, 1)
} else {
ofc.osFeature.Record(map[string]string{featureLabel: "UnknownModules"},
0)
}
ofc.osFeature.Record(map[string]string{featureLabel: "GPUSupport"},
int64(hasGPUSupport))
}