Skip to content

Commit aeb9e35

Browse files
Fix Nodetype
1 parent e18b557 commit aeb9e35

File tree

4 files changed

+34
-47
lines changed

4 files changed

+34
-47
lines changed

pkg/app/server.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,13 @@ func RunKubeStateMetrics(ctx context.Context, opts *options.Options) error {
224224

225225
namespaces := opts.Namespaces.GetNamespaces()
226226
nsFieldSelector := namespaces.GetExcludeNSFieldSelector(opts.NamespacesDenylist)
227-
nodeFieldSelector := opts.Node.GetNodeFieldSelector(opts.TrackUnscheduledPods)
227+
var nodeFieldSelector string
228+
if opts.TrackUnscheduledPods {
229+
nodeFieldSelector = "spec.nodeName="
230+
klog.InfoS("Using spec.nodeName= to select unscheduable pods without node")
231+
} else {
232+
nodeFieldSelector = opts.Node.GetNodeFieldSelector()
233+
}
228234
merged, err := storeBuilder.MergeFieldSelectors([]string{nsFieldSelector, nodeFieldSelector})
229235
if err != nil {
230236
return err

pkg/options/options.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,19 @@ type Options struct {
6060
NamespacesDenylist NamespaceList `yaml:"namespaces_denylist"`
6161
Node NodeType `yaml:"node"`
6262
TrackUnscheduledPods bool `yaml:"track_unscheduled_pods"`
63-
Pod string `yaml:"pod"`
64-
Port int `yaml:"port"`
65-
Resources ResourceSet `yaml:"resources"`
66-
Shard int32 `yaml:"shard"`
67-
TLSConfig string `yaml:"tls_config"`
68-
TelemetryHost string `yaml:"telemetry_host"`
69-
TelemetryPort int `yaml:"telemetry_port"`
70-
TotalShards int `yaml:"total_shards"`
71-
UseAPIServerCache bool `yaml:"use_api_server_cache"`
72-
ServerReadTimeout time.Duration `yaml:"server_read_timeout"`
73-
ServerWriteTimeout time.Duration `yaml:"server_write_timeout"`
74-
ServerIdleTimeout time.Duration `yaml:"server_idle_timeout"`
75-
ServerReadHeaderTimeout time.Duration `yaml:"server_read_header_timeout"`
63+
Pod string `yaml:"pod"`
64+
Port int `yaml:"port"`
65+
Resources ResourceSet `yaml:"resources"`
66+
Shard int32 `yaml:"shard"`
67+
TLSConfig string `yaml:"tls_config"`
68+
TelemetryHost string `yaml:"telemetry_host"`
69+
TelemetryPort int `yaml:"telemetry_port"`
70+
TotalShards int `yaml:"total_shards"`
71+
UseAPIServerCache bool `yaml:"use_api_server_cache"`
72+
ServerReadTimeout time.Duration `yaml:"server_read_timeout"`
73+
ServerWriteTimeout time.Duration `yaml:"server_write_timeout"`
74+
ServerIdleTimeout time.Duration `yaml:"server_idle_timeout"`
75+
ServerReadHeaderTimeout time.Duration `yaml:"server_read_header_timeout"`
7676

7777
Config string
7878

pkg/options/types.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,19 @@ func (r *ResourceSet) Type() string {
107107
// NodeType represents a nodeName to query from.
108108
type NodeType string
109109

110+
// Set sets the node name to NodeType.
111+
func (n *NodeType) Set(value string) error {
112+
*n = NodeType(value)
113+
return nil
114+
}
115+
116+
// String gets node name.
117+
func (n NodeType) String() string {
118+
return string(n)
119+
}
120+
110121
// GetNodeFieldSelector returns a nodename field selector.
111-
func (n *NodeType) GetNodeFieldSelector(fetchUnscheduledPods bool) string {
112-
if fetchUnscheduledPods {
113-
if string(*n) != "" {
114-
klog.Warningf("spec.nodeName=%s will not be used, because --track-unscheduled-pods is set", string(*n))
115-
}
116-
klog.InfoS("Using spec.nodeName= to select unscheduable pods without node")
117-
return "spec.nodeName="
118-
}
122+
func (n *NodeType) GetNodeFieldSelector() string {
119123
if string(*n) != "" {
120124
return fields.OneTermEqualSelector("spec.nodeName", string(*n)).String()
121125
}

pkg/options/types_test.go

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -175,30 +175,7 @@ func TestNodeFieldSelector(t *testing.T) {
175175

176176
for _, test := range tests {
177177
node := test.Node
178-
actual := node.GetNodeFieldSelector(false)
179-
if !reflect.DeepEqual(actual, test.Wanted) {
180-
t.Errorf("Test error for Desc: %s. Want: %+v. Got: %+v.", test.Desc, test.Wanted, actual)
181-
}
182-
}
183-
tests1 := []struct {
184-
Desc string
185-
Node NodeType
186-
Wanted string
187-
}{
188-
{
189-
Desc: "empty node name",
190-
Node: "",
191-
Wanted: "spec.nodeName=",
192-
},
193-
{
194-
Desc: "have node name when --track-unscheduled-pods is set",
195-
Node: "",
196-
Wanted: "spec.nodeName=",
197-
},
198-
}
199-
for _, test := range tests1 {
200-
node := test.Node
201-
actual := node.GetNodeFieldSelector(true)
178+
actual := node.GetNodeFieldSelector()
202179
if !reflect.DeepEqual(actual, test.Wanted) {
203180
t.Errorf("Test error for Desc: %s. Want: %+v. Got: %+v.", test.Desc, test.Wanted, actual)
204181
}
@@ -261,7 +238,7 @@ func TestMergeFieldSelectors(t *testing.T) {
261238
ns := test.Namespaces
262239
deniedNS := test.DeniedNamespaces
263240
selector1 := ns.GetExcludeNSFieldSelector(deniedNS)
264-
selector2 := test.Node.GetNodeFieldSelector(false)
241+
selector2 := test.Node.GetNodeFieldSelector()
265242
actual, err := MergeFieldSelectors([]string{selector1, selector2})
266243
if err != nil {
267244
t.Errorf("Test error for Desc: %s. Can't merge field selector %v.", test.Desc, err)

0 commit comments

Comments
 (0)