diff --git a/pkg/nfd-master/nfd-master-internal_test.go b/pkg/nfd-master/nfd-master-internal_test.go index fbc7e3a70..103b28429 100644 --- a/pkg/nfd-master/nfd-master-internal_test.go +++ b/pkg/nfd-master/nfd-master-internal_test.go @@ -284,7 +284,7 @@ func TestSetLabels(t *testing.T) { mockHelper := &apihelper.MockAPIHelpers{} mockClient := &k8sclient.Clientset{} mockNode := newMockNode() - mockServer := labelerServer{args: Args{LabelWhiteList: regexp.MustCompile("")}, apiHelper: mockHelper} + 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"} @@ -312,7 +312,7 @@ func TestSetLabels(t *testing.T) { mockHelper.On("GetNode", mockClient, workerName).Return(mockNode, nil) mockHelper.On("PatchNode", mockClient, mockNodeName, mock.MatchedBy(jsonPatchMatcher(expectedPatches))).Return(nil) mockHelper.On("PatchNodeStatus", mockClient, mockNodeName, mock.MatchedBy(jsonPatchMatcher(expectedStatusPatches))).Return(nil) - _, err := mockServer.SetLabels(mockCtx, mockReq) + _, err := mockMaster.SetLabels(mockCtx, mockReq) Convey("No error should be returned", func() { So(err, ShouldBeNil) }) @@ -326,12 +326,12 @@ func TestSetLabels(t *testing.T) { apihelper.NewJsonPatch("add", "/metadata/labels", LabelNs+"/feature-2", mockLabels["feature-2"]), } - mockServer.args.LabelWhiteList = regexp.MustCompile("^f.*2$") + mockMaster.args.LabelWhiteList = regexp.MustCompile("^f.*2$") mockHelper.On("GetClient").Return(mockClient, nil) mockHelper.On("GetNode", mockClient, workerName).Return(mockNode, nil) mockHelper.On("PatchNode", mockClient, mockNodeName, mock.MatchedBy(jsonPatchMatcher(expectedPatches))).Return(nil) mockHelper.On("PatchNodeStatus", mockClient, mockNodeName, mock.MatchedBy(jsonPatchMatcher(expectedStatusPatches))).Return(nil) - _, err := mockServer.SetLabels(mockCtx, mockReq) + _, err := mockMaster.SetLabels(mockCtx, mockReq) Convey("Error is nil", func() { So(err, ShouldBeNil) }) @@ -350,13 +350,13 @@ func TestSetLabels(t *testing.T) { apihelper.NewJsonPatch("add", "/metadata/labels", "valid.ns/feature-2", mockLabels["valid.ns/feature-2"]), } - mockServer.args.ExtraLabelNs = map[string]struct{}{"valid.ns": struct{}{}} + mockMaster.args.ExtraLabelNs = map[string]struct{}{"valid.ns": struct{}{}} mockHelper.On("GetClient").Return(mockClient, nil) mockHelper.On("GetNode", mockClient, workerName).Return(mockNode, nil) mockHelper.On("PatchNode", mockClient, mockNodeName, mock.MatchedBy(jsonPatchMatcher(expectedPatches))).Return(nil) mockHelper.On("PatchNodeStatus", mockClient, mockNodeName, mock.MatchedBy(jsonPatchMatcher(expectedStatusPatches))).Return(nil) mockReq := &labeler.SetLabelsRequest{NodeName: workerName, NfdVersion: workerVer, Labels: mockLabels} - _, err := mockServer.SetLabels(mockCtx, mockReq) + _, err := mockMaster.SetLabels(mockCtx, mockReq) Convey("Error is nil", func() { So(err, ShouldBeNil) }) @@ -375,12 +375,12 @@ func TestSetLabels(t *testing.T) { apihelper.NewJsonPatch("add", "/status/capacity", LabelNs+"/feature-3", mockLabels["feature-3"]), } - mockServer.args.ResourceLabels = []string{"feature-3", "feature-1"} + mockMaster.args.ResourceLabels = []string{"feature-3", "feature-1"} mockHelper.On("GetClient").Return(mockClient, nil) mockHelper.On("GetNode", mockClient, workerName).Return(mockNode, nil) mockHelper.On("PatchNode", mockClient, mockNodeName, mock.MatchedBy(jsonPatchMatcher(expectedPatches))).Return(nil) mockHelper.On("PatchNodeStatus", mockClient, mockNodeName, mock.MatchedBy(jsonPatchMatcher(expectedStatusPatches))).Return(nil) - _, err := mockServer.SetLabels(mockCtx, mockReq) + _, err := mockMaster.SetLabels(mockCtx, mockReq) Convey("Error is nil", func() { So(err, ShouldBeNil) }) @@ -389,15 +389,15 @@ func TestSetLabels(t *testing.T) { mockErr := errors.New("mock-error") Convey("When node update fails", func() { mockHelper.On("GetClient").Return(mockClient, mockErr) - _, err := mockServer.SetLabels(mockCtx, mockReq) + _, err := mockMaster.SetLabels(mockCtx, mockReq) Convey("An error should be returned", func() { So(err, ShouldEqual, mockErr) }) }) - mockServer.args.NoPublish = true + mockMaster.args.NoPublish = true Convey("With '--no-publish'", func() { - _, err := mockServer.SetLabels(mockCtx, mockReq) + _, err := mockMaster.SetLabels(mockCtx, mockReq) Convey("Operation should succeed", func() { So(err, ShouldBeNil) }) diff --git a/pkg/nfd-master/nfd-master.go b/pkg/nfd-master/nfd-master.go index 6196bb843..dde9393c6 100644 --- a/pkg/nfd-master/nfd-master.go +++ b/pkg/nfd-master/nfd-master.go @@ -175,7 +175,7 @@ func (m *nfdMaster) Run() error { serverOpts = append(serverOpts, grpc.Creds(credentials.NewTLS(tlsConfig))) } m.server = grpc.NewServer(serverOpts...) - pb.RegisterLabelerServer(m.server, &labelerServer{args: m.args, apiHelper: m.apihelper}) + pb.RegisterLabelerServer(m.server, m) stdoutLogger.Printf("gRPC server serving on port: %d", m.args.Port) return m.server.Serve(lis) } @@ -310,15 +310,9 @@ func filterFeatureLabels(labels Labels, extraLabelNs map[string]struct{}, labelW return outLabels, extendedResources } -// Implement LabelerServer -type labelerServer struct { - args Args - apiHelper apihelper.APIHelpers -} - -// Service SetLabels -func (s *labelerServer) SetLabels(c context.Context, r *pb.SetLabelsRequest) (*pb.SetLabelsReply, error) { - if s.args.VerifyNodeName { +// SetLabels implements LabelerServer +func (m *nfdMaster) SetLabels(c context.Context, r *pb.SetLabelsRequest) (*pb.SetLabelsReply, error) { + if m.args.VerifyNodeName { // Client authorization. // Check that the node name matches the CN from the TLS cert client, ok := peer.FromContext(c) @@ -343,13 +337,13 @@ func (s *labelerServer) SetLabels(c context.Context, r *pb.SetLabelsRequest) (*p } stdoutLogger.Printf("REQUEST Node: %s NFD-version: %s Labels: %s", r.NodeName, r.NfdVersion, r.Labels) - labels, extendedResources := filterFeatureLabels(r.Labels, s.args.ExtraLabelNs, s.args.LabelWhiteList, s.args.ResourceLabels) + labels, extendedResources := filterFeatureLabels(r.Labels, m.args.ExtraLabelNs, m.args.LabelWhiteList, m.args.ResourceLabels) - if !s.args.NoPublish { + if !m.args.NoPublish { // Advertise NFD worker version as an annotation annotations := Annotations{workerVersionAnnotation: r.NfdVersion} - err := updateNodeFeatures(s.apiHelper, r.NodeName, labels, annotations, extendedResources) + err := updateNodeFeatures(m.apihelper, r.NodeName, labels, annotations, extendedResources) if err != nil { stderrLogger.Printf("failed to advertise labels: %s", err.Error()) return &pb.SetLabelsReply{}, err