Skip to content

Commit 45d254c

Browse files
authored
Add managed-by labels to roxie-created namespaces (#58)
1 parent f0b016e commit 45d254c

3 files changed

Lines changed: 35 additions & 3 deletions

File tree

internal/deployer/deployer.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,14 +585,22 @@ func (d *Deployer) ensureNamespaceExists(namespace string) error {
585585
}
586586

587587
d.logger.Infof("Creating namespace %s", namespace)
588-
589588
_, err := d.runKubectl(context.Background(), KubectlOptions{
590589
Args: []string{"create", "namespace", namespace},
591590
})
592591
if err != nil {
593592
return fmt.Errorf("failed to create namespace: %w", err)
594593
}
595594

595+
// Label namespace as managed by roxie since we just created it
596+
_, err = d.runKubectl(context.Background(), KubectlOptions{
597+
Args: []string{"label", "namespace", namespace,
598+
"app.kubernetes.io/managed-by=roxie", "--overwrite"},
599+
})
600+
if err != nil {
601+
d.logger.Warningf("failed to label namespace %s: %v", namespace, err)
602+
}
603+
596604
return nil
597605
}
598606

tests/e2e/basic_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ func TestDeployBothSimple(t *testing.T) {
2828
args := append([]string{roxieBinary, "deploy", "--early-readiness", "both", "--envrc", envrcPath}, commonDeployArgsNoPortForward...)
2929
runCommand(t, deployTimeout*2, nil, args...)
3030

31-
// Verify namespaces exist
31+
// Verify namespaces exist and have managed-by labels
3232
t.Log("Verifying namespace: acs-central")
3333
verifyNamespaceExists(t, "acs-central")
34+
verifyNamespaceHasLabel(t, "acs-central", "app.kubernetes.io/managed-by", "roxie")
3435

3536
t.Log("Verifying namespace: acs-sensor")
3637
verifyNamespaceExists(t, "acs-sensor")
38+
verifyNamespaceHasLabel(t, "acs-sensor", "app.kubernetes.io/managed-by", "roxie")
3739

3840
// Brief pause before cleanup
3941
time.Sleep(5 * time.Second)

tests/e2e/e2e_test.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,22 @@ func verifyNamespaceExists(t *testing.T, namespace string) {
196196
}
197197
}
198198

199+
func verifyNamespaceHasLabel(t *testing.T, namespace, key, value string) {
200+
t.Helper()
201+
202+
cmd := exec.Command("kubectl", "get", "namespace", namespace,
203+
"-o", "jsonpath={.metadata.labels['"+key+"']}")
204+
output, err := cmd.Output()
205+
if err != nil {
206+
t.Fatalf("Failed to get label %s from namespace %s: %v", key, namespace, err)
207+
}
208+
209+
actualValue := strings.TrimSpace(string(output))
210+
if actualValue != value {
211+
t.Fatalf("Namespace %s has label %s=%s, expected %s", namespace, key, actualValue, value)
212+
}
213+
}
214+
199215
func doesDeploymentExist(t *testing.T, namespace string, name string) bool {
200216
t.Helper()
201217

@@ -272,12 +288,14 @@ func TestDeployCentralAndSecuredCluster(t *testing.T) {
272288
args = append([]string{roxieBinary, "deploy", "--early-readiness", "secured-cluster"}, commonDeployArgsNoPortForward...)
273289
runCommand(t, deployTimeout, envrcEnv, args...)
274290

275-
// Verify namespaces
291+
// Verify namespaces and labels
276292
t.Log("Verifying namespace: acs-central")
277293
verifyNamespaceExists(t, "acs-central")
294+
verifyNamespaceHasLabel(t, "acs-central", "app.kubernetes.io/managed-by", "roxie")
278295

279296
t.Log("Verifying namespace: acs-sensor")
280297
verifyNamespaceExists(t, "acs-sensor")
298+
verifyNamespaceHasLabel(t, "acs-sensor", "app.kubernetes.io/managed-by", "roxie")
281299

282300
// Brief pause before next test
283301
time.Sleep(5 * time.Second)
@@ -350,9 +368,11 @@ func TestDeployBothComponentsTogether(t *testing.T) {
350368

351369
t.Log("Verifying namespace: acs-central")
352370
verifyNamespaceExists(t, "acs-central")
371+
verifyNamespaceHasLabel(t, "acs-central", "app.kubernetes.io/managed-by", "roxie")
353372

354373
t.Log("Verifying namespace: acs-sensor")
355374
verifyNamespaceExists(t, "acs-sensor")
375+
verifyNamespaceHasLabel(t, "acs-sensor", "app.kubernetes.io/managed-by", "roxie")
356376

357377
// Verify Central has the pause-reconcile annotation.
358378
t.Log("Verifying pause-reconcile annotation on Central CR")
@@ -420,9 +440,11 @@ func TestDeployCentralAndSecuredClusterViaHelm(t *testing.T) {
420440

421441
t.Log("Verifying namespace: acs-central")
422442
verifyNamespaceExists(t, "acs-central")
443+
verifyNamespaceHasLabel(t, "acs-central", "app.kubernetes.io/managed-by", "roxie")
423444

424445
t.Log("Verifying namespace: acs-sensor")
425446
verifyNamespaceExists(t, "acs-sensor")
447+
verifyNamespaceHasLabel(t, "acs-sensor", "app.kubernetes.io/managed-by", "roxie")
426448
}
427449

428450
func verifyAnnotation(t *testing.T, resourceType, resourceName, namespace, annotationKey, expectedValue string) {

0 commit comments

Comments
 (0)