@@ -78,6 +78,7 @@ type coreConfig struct {
7878 Klog klogutils.KlogConfigOpts
7979 LabelWhiteList utils.RegexpVal
8080 NoPublish bool
81+ NoOwnerRefs bool
8182 FeatureSources []string
8283 Sources * []string
8384 LabelSources []string
@@ -98,14 +99,15 @@ type Args struct {
9899 Options string
99100 MetricsPort int
100101 GrpcHealthPort int
102+ NoOwnerRefs bool
101103
102104 Overrides ConfigOverrideArgs
103105}
104106
105107// ConfigOverrideArgs are args that override config file options
106108type ConfigOverrideArgs struct {
107- NoPublish * bool
108-
109+ NoPublish * bool
110+ NoOwnerRefs * bool
109111 FeatureSources * utils.StringSliceVal
110112 LabelSources * utils.StringSliceVal
111113}
@@ -265,7 +267,44 @@ func (w *nfdWorker) runFeatureDiscovery() error {
265267 return nil
266268}
267269
268- // Run NfdWorker client. Returns if a fatal error is encountered, or, after
270+ // Set owner ref
271+ func (w * nfdWorker ) setOwnerReference () error {
272+ ownerReference := []metav1.OwnerReference {}
273+
274+ if ! w .config .Core .NoOwnerRefs {
275+ // Get pod owner reference
276+ podName := os .Getenv ("POD_NAME" )
277+ // Add pod owner reference if it exists
278+ if podName != "" {
279+ if selfPod , err := w .k8sClient .CoreV1 ().Pods (w .kubernetesNamespace ).Get (context .TODO (), podName , metav1.GetOptions {}); err != nil {
280+ klog .ErrorS (err , "failed to get self pod, cannot inherit ownerReference for NodeFeature" )
281+ return err
282+ } else {
283+ ownerReference = append (ownerReference , selfPod .OwnerReferences ... )
284+ }
285+
286+ podUID := os .Getenv ("POD_UID" )
287+ if podUID != "" {
288+ ownerReference = append (ownerReference , metav1.OwnerReference {
289+ APIVersion : "v1" ,
290+ Kind : "Pod" ,
291+ Name : podName ,
292+ UID : types .UID (podUID ),
293+ })
294+ } else {
295+ klog .InfoS ("Cannot append POD ownerReference to NodeFeature, POD_UID not specified" )
296+ }
297+ } else {
298+ klog .InfoS ("Cannot set NodeFeature owner references, POD_NAME not specified" )
299+ }
300+ }
301+
302+ w .ownerReference = ownerReference
303+
304+ return nil
305+ }
306+
307+ // Run NfdWorker client. Returns an error if a fatal error is encountered, or, after
269308// one request if OneShot is set to 'true' in the worker args.
270309func (w * nfdWorker ) Run () error {
271310 klog .InfoS ("Node Feature Discovery Worker" , "version" , version .Get (), "nodeName" , utils .NodeName (), "namespace" , w .kubernetesNamespace )
@@ -281,37 +320,6 @@ func (w *nfdWorker) Run() error {
281320 labelTrigger .Reset (w .config .Core .SleepInterval .Duration )
282321 defer labelTrigger .Stop ()
283322
284- // Create owner ref
285- ownerReference := []metav1.OwnerReference {}
286- // Get pod owner reference
287- podName := os .Getenv ("POD_NAME" )
288-
289- // Add pod owner reference if it exists
290- if podName != "" {
291- if selfPod , err := w .k8sClient .CoreV1 ().Pods (w .kubernetesNamespace ).Get (context .TODO (), podName , metav1.GetOptions {}); err != nil {
292- klog .ErrorS (err , "failed to get self pod, cannot inherit ownerReference for NodeFeature" )
293- return err
294- } else {
295- ownerReference = append (ownerReference , selfPod .OwnerReferences ... )
296- }
297-
298- podUID := os .Getenv ("POD_UID" )
299- if podUID != "" {
300- ownerReference = append (ownerReference , metav1.OwnerReference {
301- APIVersion : "v1" ,
302- Kind : "Pod" ,
303- Name : podName ,
304- UID : types .UID (podUID ),
305- })
306- } else {
307- klog .InfoS ("Cannot append POD ownerReference to NodeFeature, POD_UID not specified" )
308- }
309- } else {
310- klog .InfoS ("Cannot set NodeFeature owner references, POD_NAME not specified" )
311- }
312-
313- w .ownerReference = ownerReference
314-
315323 // Register to metrics server
316324 if w .args .MetricsPort > 0 {
317325 m := utils .CreateMetricsServer (w .args .MetricsPort ,
@@ -466,6 +474,11 @@ func (w *nfdWorker) configureCore(c coreConfig) error {
466474 klogV .InfoS ("enabled label sources" , "labelSources" , n )
467475 }
468476
477+ err = w .setOwnerReference ()
478+ if err != nil {
479+ return err
480+ }
481+
469482 return nil
470483}
471484
@@ -511,6 +524,9 @@ func (w *nfdWorker) configure(filepath string, overrides string) error {
511524 if w .args .Overrides .NoPublish != nil {
512525 c .Core .NoPublish = * w .args .Overrides .NoPublish
513526 }
527+ if w .args .Overrides .NoOwnerRefs != nil {
528+ c .Core .NoOwnerRefs = * w .args .Overrides .NoOwnerRefs
529+ }
514530 if w .args .Overrides .FeatureSources != nil {
515531 c .Core .FeatureSources = * w .args .Overrides .FeatureSources
516532 }
0 commit comments