Skip to content

Commit dadd25e

Browse files
ybettank8s-ci-robot
authored andcommitted
Adding a . as a valid character for Modules' name.
When a `Module` is deleted, the `NMC` controller is removing the labels for this `Module` in the `NMC` object. As long as those labels for a specific module exists, the module's finalizer will not be removed upon module deletion and the module will keep hanging forever if deleted. When a module is created with a `.` in its name, the created label for `NMC` doesn't match the expected regexp for this label and, therefore, not removed upon module's deletion. Adding the `.` will allow the label to match the regexp, be removed upon deletion and deleting the module gracefully. Signed-off-by: Yoni Bettan <[email protected]>
1 parent a0f0d37 commit dadd25e

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

internal/nmc/labels.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
)
77

88
var (
9-
reConfiguredLabel = regexp.MustCompile(`^beta\.kmm\.node\.kubernetes\.io/([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+)\.module-configured$`)
10-
reInUseLabel = regexp.MustCompile(`^beta\.kmm\.node\.kubernetes\.io/([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+)\.module-in-use$`)
9+
reConfiguredLabel = regexp.MustCompile(`^beta\.kmm\.node\.kubernetes\.io/([a-zA-Z0-9-]+)\.([a-zA-Z0-9-\.]+)\.module-configured$`)
10+
reInUseLabel = regexp.MustCompile(`^beta\.kmm\.node\.kubernetes\.io/([a-zA-Z0-9-]+)\.([a-zA-Z0-9-\.]+)\.module-in-use$`)
1111
)
1212

1313
func IsModuleConfiguredLabel(s string) (bool, string, string) {

internal/nmc/labels_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ var _ = Describe("ModuleConfiguredLabel", func() {
1414
Equal("beta.kmm.node.kubernetes.io/a.b.module-configured"),
1515
)
1616
})
17+
18+
It("should work as expected with a dot in the name", func() {
19+
20+
Expect(
21+
ModuleConfiguredLabel("a", "b.1"),
22+
).To(
23+
Equal("beta.kmm.node.kubernetes.io/a.b.1.module-configured"),
24+
)
25+
})
1726
})
1827

1928
var _ = Describe("ModuleInUseLabel", func() {
@@ -25,6 +34,15 @@ var _ = Describe("ModuleInUseLabel", func() {
2534
Equal("beta.kmm.node.kubernetes.io/a.b.module-in-use"),
2635
)
2736
})
37+
38+
It("should work as expected with a dot in the name", func() {
39+
40+
Expect(
41+
ModuleInUseLabel("a", "b.1"),
42+
).To(
43+
Equal("beta.kmm.node.kubernetes.io/a.b.1.module-in-use"),
44+
)
45+
})
2846
})
2947

3048
var _ = Describe("IsModuleConfiguredLabel", func() {
@@ -47,6 +65,7 @@ var _ = Describe("IsModuleConfiguredLabel", func() {
4765
Entry(nil, "beta.kmm.node.kubernetes.io/..module-configured", false, "", ""),
4866
Entry(nil, "beta.kmm.node.kubernetes.io/a123.b456.module-configured", true, "a123", "b456"),
4967
Entry(nil, "beta.kmm.node.kubernetes.io/with-hypen.withouthypen.module-configured", true, "with-hypen", "withouthypen"),
68+
Entry(nil, "beta.kmm.node.kubernetes.io/my-namespace.my-name.stil-my-name.module-configured", true, "my-namespace", "my-name.stil-my-name"),
5069
)
5170
})
5271

@@ -70,5 +89,6 @@ var _ = Describe("IsModuleInUseLabel", func() {
7089
Entry(nil, "beta.kmm.node.kubernetes.io/..module-in-use", false, "", ""),
7190
Entry(nil, "beta.kmm.node.kubernetes.io/a123.b456.module-in-use", true, "a123", "b456"),
7291
Entry(nil, "beta.kmm.node.kubernetes.io/with-hypen.withouthypen.module-in-use", true, "with-hypen", "withouthypen"),
92+
Entry(nil, "beta.kmm.node.kubernetes.io/my-namespace.my-name.stil-my-name.module-in-use", true, "my-namespace", "my-name.stil-my-name"),
7393
)
7494
})

0 commit comments

Comments
 (0)