mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-03-28 02:37:11 +00:00
nfd-master: make nodeName non-global
This commit is contained in:
parent
b146508e64
commit
cdca6d667a
2 changed files with 24 additions and 17 deletions
|
@ -41,10 +41,6 @@ const (
|
|||
mockNodeName = "mock-node"
|
||||
)
|
||||
|
||||
func init() {
|
||||
nodeName = mockNodeName
|
||||
}
|
||||
|
||||
func newMockNode() *api.Node {
|
||||
n := api.Node{}
|
||||
n.Name = mockNodeName
|
||||
|
@ -54,6 +50,14 @@ func newMockNode() *api.Node {
|
|||
return &n
|
||||
}
|
||||
|
||||
func newMockMaster(apihelper apihelper.APIHelpers) *nfdMaster {
|
||||
return &nfdMaster{
|
||||
nodeName: mockNodeName,
|
||||
args: Args{LabelWhiteList: regexp.MustCompile("")},
|
||||
apihelper: apihelper,
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateNodeFeatures(t *testing.T) {
|
||||
Convey("When I update the node using fake client", t, func() {
|
||||
fakeFeatureLabels := map[string]string{LabelNs + "/source-feature.1": "1", LabelNs + "/source-feature.2": "2", LabelNs + "/source-feature.3": "val3"}
|
||||
|
@ -159,6 +163,7 @@ func TestUpdateNodeFeatures(t *testing.T) {
|
|||
func TestUpdateMasterNode(t *testing.T) {
|
||||
Convey("When updating the nfd-master node", t, func() {
|
||||
mockHelper := &apihelper.MockAPIHelpers{}
|
||||
mockMaster := newMockMaster(mockHelper)
|
||||
mockClient := &k8sclient.Clientset{}
|
||||
mockNode := newMockNode()
|
||||
Convey("When update operation succeeds", func() {
|
||||
|
@ -167,7 +172,7 @@ func TestUpdateMasterNode(t *testing.T) {
|
|||
mockHelper.On("GetClient").Return(mockClient, nil)
|
||||
mockHelper.On("GetNode", mockClient, mockNodeName).Return(mockNode, nil)
|
||||
mockHelper.On("PatchNode", mockClient, mockNodeName, mock.MatchedBy(jsonPatchMatcher(expectedPatches))).Return(nil)
|
||||
err := updateMasterNode(mockHelper)
|
||||
err := mockMaster.updateMasterNode()
|
||||
Convey("No error should be returned", func() {
|
||||
So(err, ShouldBeNil)
|
||||
})
|
||||
|
@ -176,7 +181,7 @@ func TestUpdateMasterNode(t *testing.T) {
|
|||
mockErr := errors.New("mock-error")
|
||||
Convey("When getting API client fails", func() {
|
||||
mockHelper.On("GetClient").Return(mockClient, mockErr)
|
||||
err := updateMasterNode(mockHelper)
|
||||
err := mockMaster.updateMasterNode()
|
||||
Convey("An error should be returned", func() {
|
||||
So(err, ShouldEqual, mockErr)
|
||||
})
|
||||
|
@ -185,7 +190,7 @@ func TestUpdateMasterNode(t *testing.T) {
|
|||
Convey("When getting API node object fails", func() {
|
||||
mockHelper.On("GetClient").Return(mockClient, nil)
|
||||
mockHelper.On("GetNode", mockClient, mockNodeName).Return(mockNode, mockErr)
|
||||
err := updateMasterNode(mockHelper)
|
||||
err := mockMaster.updateMasterNode()
|
||||
Convey("An error should be returned", func() {
|
||||
So(err, ShouldEqual, mockErr)
|
||||
})
|
||||
|
@ -195,7 +200,7 @@ func TestUpdateMasterNode(t *testing.T) {
|
|||
mockHelper.On("GetClient").Return(mockClient, nil)
|
||||
mockHelper.On("GetNode", mockClient, mockNodeName).Return(mockNode, nil)
|
||||
mockHelper.On("PatchNode", mockClient, mockNodeName, mock.Anything).Return(mockErr)
|
||||
err := updateMasterNode(mockHelper)
|
||||
err := mockMaster.updateMasterNode()
|
||||
Convey("An error should be returned", func() {
|
||||
So(err, ShouldEqual, mockErr)
|
||||
})
|
||||
|
@ -282,9 +287,9 @@ func TestSetLabels(t *testing.T) {
|
|||
const workerName = "mock-worker"
|
||||
const workerVer = "0.1-test"
|
||||
mockHelper := &apihelper.MockAPIHelpers{}
|
||||
mockMaster := newMockMaster(mockHelper)
|
||||
mockClient := &k8sclient.Clientset{}
|
||||
mockNode := newMockNode()
|
||||
mockMaster := nfdMaster{args: Args{LabelWhiteList: regexp.MustCompile("")}, apihelper: mockHelper}
|
||||
mockCtx := context.Background()
|
||||
// In the gRPC request the label names may omit the default ns
|
||||
mockLabels := map[string]string{"feature-1": "1", "feature-2": "val-2", "feature-3": "3"}
|
||||
|
|
|
@ -59,7 +59,6 @@ const (
|
|||
var (
|
||||
stdoutLogger = log.New(os.Stdout, "", log.LstdFlags)
|
||||
stderrLogger = log.New(os.Stderr, "", log.LstdFlags)
|
||||
nodeName = os.Getenv("NODE_NAME")
|
||||
)
|
||||
|
||||
// Labels are a Kubernetes representation of discovered features.
|
||||
|
@ -94,6 +93,7 @@ type NfdMaster interface {
|
|||
|
||||
type nfdMaster struct {
|
||||
args Args
|
||||
nodeName string
|
||||
server *grpc.Server
|
||||
ready chan bool
|
||||
apihelper apihelper.APIHelpers
|
||||
|
@ -101,7 +101,9 @@ type nfdMaster struct {
|
|||
|
||||
// Create new NfdMaster server instance.
|
||||
func NewNfdMaster(args Args) (NfdMaster, error) {
|
||||
nfd := &nfdMaster{args: args, ready: make(chan bool, 1)}
|
||||
nfd := &nfdMaster{args: args,
|
||||
nodeName: os.Getenv("NODE_NAME"),
|
||||
ready: make(chan bool, 1)}
|
||||
|
||||
// Check TLS related args
|
||||
if args.CertFile != "" || args.KeyFile != "" || args.CaFile != "" {
|
||||
|
@ -126,14 +128,14 @@ func NewNfdMaster(args Args) (NfdMaster, error) {
|
|||
// is called.
|
||||
func (m *nfdMaster) Run() error {
|
||||
stdoutLogger.Printf("Node Feature Discovery Master %s", version.Get())
|
||||
stdoutLogger.Printf("NodeName: '%s'", nodeName)
|
||||
stdoutLogger.Printf("NodeName: '%s'", m.nodeName)
|
||||
|
||||
if m.args.Prune {
|
||||
return m.prune()
|
||||
}
|
||||
|
||||
if !m.args.NoPublish {
|
||||
err := updateMasterNode(m.apihelper)
|
||||
err := m.updateMasterNode()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to update master node: %v", err)
|
||||
}
|
||||
|
@ -241,19 +243,19 @@ func (m *nfdMaster) prune() error {
|
|||
}
|
||||
|
||||
// Advertise NFD master information
|
||||
func updateMasterNode(helper apihelper.APIHelpers) error {
|
||||
cli, err := helper.GetClient()
|
||||
func (m *nfdMaster) updateMasterNode() error {
|
||||
cli, err := m.apihelper.GetClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
node, err := helper.GetNode(cli, nodeName)
|
||||
node, err := m.apihelper.GetNode(cli, m.nodeName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Advertise NFD version as an annotation
|
||||
p := createPatches(nil, node.Annotations, Annotations{masterVersionAnnotation: version.Get()}, "/metadata/annotations")
|
||||
err = helper.PatchNode(cli, node.Name, p)
|
||||
err = m.apihelper.PatchNode(cli, node.Name, p)
|
||||
if err != nil {
|
||||
stderrLogger.Printf("failed to patch node annotations: %v", err)
|
||||
return err
|
||||
|
|
Loading…
Add table
Reference in a new issue