layer1: add namespace event bridge step 18
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
# 2026-04-26 — NamespaceManager rewrite, step 18
|
||||
|
||||
## Цель шага
|
||||
|
||||
Подготовить watcher-friendly helper для преобразования Kubernetes Namespace в `NamespaceEvent`.
|
||||
|
||||
## Что меняем
|
||||
|
||||
1. Добавляем `NamespaceEventFromNamespace()`.
|
||||
2. Добавляем unit tests на перенос имени и labels.
|
||||
|
||||
## Что НЕ меняем
|
||||
|
||||
- не подключаем helper к watcher-ам;
|
||||
- не меняем runtime behavior.
|
||||
@@ -13,11 +13,11 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
ENV_FUNCTION_NAMESPACE string = "FISSION_FUNCTION_NAMESPACE"
|
||||
ENV_BUILDER_NAMESPACE string = "FISSION_BUILDER_NAMESPACE"
|
||||
ENV_DEFAULT_NAMESPACE string = "FISSION_DEFAULT_NAMESPACE"
|
||||
ENV_ADDITIONAL_NAMESPACE string = "FISSION_RESOURCE_NAMESPACES"
|
||||
ManagedNamespaceLabelKey string = "fission.io/managed"
|
||||
ENV_FUNCTION_NAMESPACE string = "FISSION_FUNCTION_NAMESPACE"
|
||||
ENV_BUILDER_NAMESPACE string = "FISSION_BUILDER_NAMESPACE"
|
||||
ENV_DEFAULT_NAMESPACE string = "FISSION_DEFAULT_NAMESPACE"
|
||||
ENV_ADDITIONAL_NAMESPACE string = "FISSION_RESOURCE_NAMESPACES"
|
||||
ManagedNamespaceLabelKey string = "fission.io/managed"
|
||||
ManagedNamespaceLabelValue string = "true"
|
||||
)
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package utils
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"time"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
NamespacePartStateRegistering string = "registering"
|
||||
@@ -77,6 +81,13 @@ func ManagedNamespaceEvent(eventType NamespaceEventType, name string, source Nam
|
||||
}, source, observedAt)
|
||||
}
|
||||
|
||||
func NamespaceEventFromNamespace(eventType NamespaceEventType, namespace *corev1.Namespace, source NamespaceSource, observedAt time.Time) NamespaceEvent {
|
||||
if namespace == nil {
|
||||
return NewNamespaceEvent(eventType, "", nil, source, observedAt)
|
||||
}
|
||||
return NewNamespaceEvent(eventType, namespace.Name, namespace.Labels, source, observedAt)
|
||||
}
|
||||
|
||||
func (nr NamespaceRecord) Clone() NamespaceRecord {
|
||||
clone := nr
|
||||
clone.Labels = cloneStringMap(nr.Labels)
|
||||
|
||||
@@ -3,6 +3,8 @@ package utils
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
func TestNamespaceRecordClone(t *testing.T) {
|
||||
@@ -86,3 +88,22 @@ func TestManagedNamespaceEvent(t *testing.T) {
|
||||
t.Fatalf("expected tenant-a event name")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNamespaceEventFromNamespace(t *testing.T) {
|
||||
namespace := &corev1.Namespace{}
|
||||
namespace.Name = "tenant-a"
|
||||
namespace.Labels = map[string]string{ManagedNamespaceLabelKey: ManagedNamespaceLabelValue}
|
||||
|
||||
event := NamespaceEventFromNamespace(NamespaceEventAdd, namespace, NamespaceSourceWatcher, time.Now().UTC())
|
||||
if event.Name != "tenant-a" {
|
||||
t.Fatalf("expected tenant-a event name")
|
||||
}
|
||||
if event.Labels[ManagedNamespaceLabelKey] != ManagedNamespaceLabelValue {
|
||||
t.Fatalf("expected namespace labels to be copied into event")
|
||||
}
|
||||
|
||||
namespace.Labels[ManagedNamespaceLabelKey] = "false"
|
||||
if event.Labels[ManagedNamespaceLabelKey] != ManagedNamespaceLabelValue {
|
||||
t.Fatalf("expected event labels to stay detached from original namespace")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user