diff --git a/pkg/nfd-worker/nfd-worker.go b/pkg/nfd-worker/nfd-worker.go index b702ce110..298d4a6a1 100644 --- a/pkg/nfd-worker/nfd-worker.go +++ b/pkg/nfd-worker/nfd-worker.go @@ -465,6 +465,7 @@ func createFeatureLabels(sources []source.FeatureSource, labelWhiteList regexp.R labels = Labels{} // Do feature discovery from all configured sources. + klog.Info("starting feature discovery...") for _, source := range sources { labelsFromSource, err := getFeatureLabels(source, labelWhiteList) if err != nil { @@ -473,11 +474,11 @@ func createFeatureLabels(sources []source.FeatureSource, labelWhiteList regexp.R } for name, value := range labelsFromSource { - // Log discovered feature. - klog.Infof("%s = %s", name, value) labels[name] = value } } + klog.Info("feature discovery completed") + utils.KlogDump(1, "labels discovered by feature sources:", " ", labels) return labels } diff --git a/pkg/utils/dump.go b/pkg/utils/dump.go new file mode 100644 index 000000000..56ab2328e --- /dev/null +++ b/pkg/utils/dump.go @@ -0,0 +1,46 @@ +/* +Copyright 2021 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package utils + +import ( + "fmt" + "strings" + + "k8s.io/klog/v2" + "sigs.k8s.io/yaml" +) + +func KlogDump(v klog.Level, heading, prefix string, obj interface{}) { + if klog.V(v).Enabled() { + klog.InfoDepth(1, heading) + + d := strings.Split(Dump(obj), "\n") + // Print all but the last empty line + for i := 0; i < len(d)-1; i++ { + klog.InfoDepth(1, prefix+d[i]) + } + } +} + +// Dump dumps an object into YAML textual format +func Dump(obj interface{}) string { + out, err := yaml.Marshal(obj) + if err != nil { + return fmt.Sprintf("\n", obj, err) + } + return string(out) +}