diff --git a/cmd/nfd-topology-updater/main.go b/cmd/nfd-topology-updater/main.go index e6115b3ee..0db443e27 100644 --- a/cmd/nfd-topology-updater/main.go +++ b/cmd/nfd-topology-updater/main.go @@ -26,7 +26,6 @@ import ( "k8s.io/klog/v2" kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1" - nfdclient "sigs.k8s.io/node-feature-discovery/pkg/nfd-client" topology "sigs.k8s.io/node-feature-discovery/pkg/nfd-client/topology-updater" "sigs.k8s.io/node-feature-discovery/pkg/resourcemonitor" "sigs.k8s.io/node-feature-discovery/pkg/topologypolicy" @@ -111,12 +110,12 @@ func parseArgs(flags *flag.FlagSet, osArgs ...string) (*topology.Args, *resource } if len(resourcemonitorArgs.KubeletConfigURI) == 0 { - if len(nfdclient.NodeName()) == 0 { + if len(utils.NodeName()) == 0 { fmt.Fprintf(flags.Output(), "unable to determine the default kubelet config endpoint 'https://${NODE_NAME}:%d/configz' due to empty NODE_NAME environment, "+ "please either define the NODE_NAME environment variable or specify endpoint with the -kubelet-config-uri flag\n", kubeletSecurePort) os.Exit(1) } - resourcemonitorArgs.KubeletConfigURI = fmt.Sprintf("https://%s:%d/configz", nfdclient.NodeName(), kubeletSecurePort) + resourcemonitorArgs.KubeletConfigURI = fmt.Sprintf("https://%s:%d/configz", utils.NodeName(), kubeletSecurePort) } return args, resourcemonitorArgs diff --git a/pkg/nfd-client/base.go b/pkg/nfd-client/base.go index c96553542..e8f53ed05 100644 --- a/pkg/nfd-client/base.go +++ b/pkg/nfd-client/base.go @@ -56,15 +56,6 @@ type Args struct { Klog map[string]*utils.KlogFlagVal } -var nodeName string - -func init() { - nodeName = os.Getenv("NODE_NAME") -} - -// NodeName returns the name of the k8s node we're running on. -func NodeName() string { return nodeName } - // NewNfdBaseClient creates a new NfdBaseClient instance. func NewNfdBaseClient(args *Args) (NfdBaseClient, error) { nfd := NfdBaseClient{args: *args} diff --git a/pkg/nfd-client/topology-updater/nfd-topology-updater.go b/pkg/nfd-client/topology-updater/nfd-topology-updater.go index 7ada9cb3b..d3072bde2 100644 --- a/pkg/nfd-client/topology-updater/nfd-topology-updater.go +++ b/pkg/nfd-client/topology-updater/nfd-topology-updater.go @@ -78,7 +78,7 @@ func NewTopologyUpdater(args Args, resourcemonitorArgs resourcemonitor.Args, pol args: args, resourcemonitorArgs: resourcemonitorArgs, nodeInfo: &staticNodeInfo{ - nodeName: os.Getenv("NODE_NAME"), + nodeName: utils.NodeName(), tmPolicy: policy, }, stop: make(chan struct{}, 1), diff --git a/pkg/nfd-client/worker/nfd-worker.go b/pkg/nfd-client/worker/nfd-worker.go index abc0fdb4a..1f7443cf0 100644 --- a/pkg/nfd-client/worker/nfd-worker.go +++ b/pkg/nfd-client/worker/nfd-worker.go @@ -157,7 +157,7 @@ func newDefaultConfig() *NFDConfig { // one request if OneShot is set to 'true' in the worker args. func (w *nfdWorker) Run() error { klog.Infof("Node Feature Discovery Worker %s", version.Get()) - klog.Infof("NodeName: '%s'", clientcommon.NodeName()) + klog.Infof("NodeName: '%s'", utils.NodeName()) klog.Infof("Kubernetes namespace: '%s'", w.kubernetesNamespace) // Create watcher for config file and read initial configuration @@ -559,7 +559,7 @@ func (w *nfdWorker) advertiseFeatureLabels(labels Labels) error { labelReq := pb.SetLabelsRequest{Labels: labels, Features: source.GetAllFeatures(), NfdVersion: version.Get(), - NodeName: clientcommon.NodeName()} + NodeName: utils.NodeName()} cli, err := w.getGrpcClient() if err != nil { @@ -581,7 +581,7 @@ func (m *nfdWorker) updateNodeFeatureObject(labels Labels) error { if err != nil { return err } - nodename := clientcommon.NodeName() + nodename := utils.NodeName() namespace := m.kubernetesNamespace features := source.GetAllFeatures() diff --git a/pkg/nfd-master/nfd-master.go b/pkg/nfd-master/nfd-master.go index 7446471c2..4d7c3d13c 100644 --- a/pkg/nfd-master/nfd-master.go +++ b/pkg/nfd-master/nfd-master.go @@ -21,7 +21,6 @@ import ( "crypto/x509" "fmt" "net" - "os" "path" "regexp" "sort" @@ -101,7 +100,7 @@ type nfdMaster struct { // NewNfdMaster creates a new NfdMaster server instance. func NewNfdMaster(args *Args) (NfdMaster, error) { nfd := &nfdMaster{args: *args, - nodeName: os.Getenv("NODE_NAME"), + nodeName: utils.NodeName(), namespace: utils.GetKubernetesNamespace(), ready: make(chan bool, 1), stop: make(chan struct{}, 1), diff --git a/pkg/utils/kubernetes.go b/pkg/utils/kubernetes.go index 4dd6ba09f..7601da0fc 100644 --- a/pkg/utils/kubernetes.go +++ b/pkg/utils/kubernetes.go @@ -21,6 +21,16 @@ import ( "strings" ) +var nodeName string + +// NodeName returns the name of the k8s node we're running on. +func NodeName() string { + if nodeName == "" { + nodeName = os.Getenv("NODE_NAME") + } + return nodeName +} + // GetKubernetesNamespace returns the kubernetes namespace we're running under, // or an empty string if the namespace cannot be determined. func GetKubernetesNamespace() string { diff --git a/source/system/system.go b/source/system/system.go index 6945ef24d..9399bd1d9 100644 --- a/source/system/system.go +++ b/source/system/system.go @@ -82,7 +82,7 @@ func (s *systemSource) Discover() error { // Get node name s.features.Attributes[NameFeature] = nfdv1alpha1.NewAttributeFeatures(nil) - s.features.Attributes[NameFeature].Elements["nodename"] = os.Getenv("NODE_NAME") + s.features.Attributes[NameFeature].Elements["nodename"] = utils.NodeName() // Get os-release information release, err := parseOSRelease()