func()

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))
}