@@ -14,6 +14,7 @@ import (
1414 "sync"
1515 "time"
1616
17+ v1 "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/client/listers/sriovnetwork/v1"
1718 mcfgv1 "github.com/openshift/machine-config-operator/pkg/apis/machineconfiguration.openshift.io/v1"
1819 daemonconsts "github.com/openshift/machine-config-operator/pkg/daemon/constants"
1920 mcfginformers "github.com/openshift/machine-config-operator/pkg/generated/informers/externalversions"
@@ -98,6 +99,8 @@ type Daemon struct {
9899
99100 disableDrain bool
100101
102+ sriovNetworkNodeStateLister v1.SriovNetworkNodeStateLister
103+
101104 nodeLister listerv1.NodeLister
102105
103106 workqueue workqueue.RateLimitingInterface
@@ -220,6 +223,7 @@ func (dn *Daemon) Run(stopCh <-chan struct{}, exitCh <-chan error) error {
220223 },
221224 )
222225
226+ dn .sriovNetworkNodeStateLister = informerFactory .Sriovnetwork ().V1 ().SriovNetworkNodeStates ().Lister ()
223227 informer := informerFactory .Sriovnetwork ().V1 ().SriovNetworkNodeStates ().Informer ()
224228 informer .AddEventHandler (cache.ResourceEventHandlerFuncs {
225229 AddFunc : dn .enqueueNodeState ,
@@ -288,6 +292,13 @@ func (dn *Daemon) Run(stopCh <-chan struct{}, exitCh <-chan error) error {
288292 }
289293}
290294
295+ func (dn * Daemon ) getSriovNetworkNodeState () (* sriovnetworkv1.SriovNetworkNodeState , error ) {
296+ if dn .sriovNetworkNodeStateLister != nil {
297+ return dn .sriovNetworkNodeStateLister .SriovNetworkNodeStates (vars .Namespace ).Get (vars .NodeName )
298+ }
299+ return dn .client .SriovnetworkV1 ().SriovNetworkNodeStates (vars .Namespace ).Get (context .Background (), vars .NodeName , metav1.GetOptions {ResourceVersion : "0" })
300+ }
301+
291302func (dn * Daemon ) runWorker () {
292303 for dn .processNextWorkItem () {
293304 }
@@ -413,7 +424,7 @@ func (dn *Daemon) nodeStateSyncHandler() error {
413424 // Get the latest NodeState
414425 var latestState * sriovnetworkv1.SriovNetworkNodeState
415426 var sriovResult = & systemd.SriovResult {SyncStatus : consts .SyncStatusSucceeded , LastSyncError : "" }
416- latestState , err = dn .client . SriovnetworkV1 (). SriovNetworkNodeStates ( vars . Namespace ). Get ( context . Background (), vars . NodeName , metav1. GetOptions {} )
427+ latestState , err = dn .getSriovNetworkNodeState ( )
417428 if err != nil {
418429 log .Log .Error (err , "nodeStateSyncHandler(): Failed to fetch node state" , "name" , vars .NodeName )
419430 return err
@@ -511,7 +522,7 @@ func (dn *Daemon) nodeStateSyncHandler() error {
511522 // we need to load the latest status to our object
512523 // if we don't do it we can have a race here where the user remove the virtual functions but the operator didn't
513524 // trigger the refresh
514- updatedState , err := dn .client . SriovnetworkV1 (). SriovNetworkNodeStates ( vars . Namespace ). Get ( context . Background (), vars . NodeName , metav1. GetOptions {} )
525+ updatedState , err := dn .getSriovNetworkNodeState ( )
515526 if err != nil {
516527 log .Log .Error (err , "nodeStateSyncHandler(): Failed to fetch node state" , "name" , vars .NodeName )
517528 return err
@@ -1062,11 +1073,7 @@ func (dn *Daemon) drainNode() error {
10621073// TODO: move this to host interface
10631074func (dn * Daemon ) tryCreateSwitchdevUdevRule () error {
10641075 log .Log .V (2 ).Info ("tryCreateSwitchdevUdevRule()" )
1065- nodeState , nodeStateErr := dn .client .SriovnetworkV1 ().SriovNetworkNodeStates (vars .Namespace ).Get (
1066- context .Background (),
1067- vars .NodeName ,
1068- metav1.GetOptions {},
1069- )
1076+ nodeState , nodeStateErr := dn .getSriovNetworkNodeState ()
10701077 if nodeStateErr != nil {
10711078 log .Log .Error (nodeStateErr , "could not fetch node state, skip updating switchdev udev rules" , "name" , vars .NodeName )
10721079 return nil
0 commit comments