diff --git a/pkg/nfd-client/worker/nfd-worker.go b/pkg/nfd-client/worker/nfd-worker.go index 1db56bc3a..f59701d7c 100644 --- a/pkg/nfd-client/worker/nfd-worker.go +++ b/pkg/nfd-client/worker/nfd-worker.go @@ -32,6 +32,7 @@ import ( "k8s.io/klog/v2" "sigs.k8s.io/yaml" + "sigs.k8s.io/node-feature-discovery/pkg/api/feature" pb "sigs.k8s.io/node-feature-discovery/pkg/labeler" nfdclient "sigs.k8s.io/node-feature-discovery/pkg/nfd-client" "sigs.k8s.io/node-feature-discovery/pkg/utils" @@ -479,6 +480,17 @@ func getFeatureLabels(source source.LabelSource, labelWhiteList regexp.Regexp) ( return labels, nil } +// getFeatures returns raw features from all feature sources +func getFeatures() map[string]*feature.DomainFeatures { + features := make(map[string]*feature.DomainFeatures) + + for name, src := range source.GetAllFeatureSources() { + features[name] = src.GetFeatures() + } + + return features +} + // advertiseFeatureLabels advertises the feature labels to a Kubernetes node // via the NFD server. func advertiseFeatureLabels(client pb.LabelerClient, labels Labels) error { @@ -488,6 +500,7 @@ func advertiseFeatureLabels(client pb.LabelerClient, labels Labels) error { klog.Infof("sending labeling request to nfd-master") labelReq := pb.SetLabelsRequest{Labels: labels, + Features: getFeatures(), NfdVersion: version.Get(), NodeName: nfdclient.NodeName()} _, err := client.SetLabels(ctx, &labelReq) diff --git a/pkg/nfd-master/nfd-master.go b/pkg/nfd-master/nfd-master.go index c629bfe45..7d594797f 100644 --- a/pkg/nfd-master/nfd-master.go +++ b/pkg/nfd-master/nfd-master.go @@ -384,10 +384,12 @@ func (m *nfdMaster) SetLabels(c context.Context, r *pb.SetLabelsRequest) (*pb.Se if err != nil { return &pb.SetLabelsReply{}, err } - if klog.V(1).Enabled() { + switch { + case klog.V(2).Enabled(): + utils.KlogDump(2, "REQUEST", " ", r) + case klog.V(1).Enabled(): klog.Infof("REQUEST Node: %q NFD-version: %q Labels: %s", r.NodeName, r.NfdVersion, r.Labels) - - } else { + default: klog.Infof("received labeling request for node %q", r.NodeName) }