layer1: share namespace watcher lifecycle helpers
This commit is contained in:
@@ -6,6 +6,8 @@ import (
|
||||
"sort"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
type NamespaceSubscriber interface {
|
||||
@@ -100,6 +102,41 @@ func NewWatcherNamespaceManager(ctx context.Context, namespaces []string, source
|
||||
return manager, err
|
||||
}
|
||||
|
||||
func NamespaceBecameUnmanaged(oldNamespace *corev1.Namespace, newNamespace *corev1.Namespace) bool {
|
||||
if oldNamespace == nil || newNamespace == nil {
|
||||
return false
|
||||
}
|
||||
return IsManagedNamespace(oldNamespace.Labels) && !IsManagedNamespace(newNamespace.Labels)
|
||||
}
|
||||
|
||||
func DispatchNamespaceAdd(ctx context.Context, manager NamespaceManager, namespace *corev1.Namespace, source NamespaceSource, observedAt time.Time) (NamespaceRecord, bool, error) {
|
||||
if manager == nil || namespace == nil || namespace.Name == "" {
|
||||
return NamespaceRecord{}, false, nil
|
||||
}
|
||||
manager.Upsert(NamespaceEventFromNamespace(NamespaceEventAdd, namespace, source, observedAt))
|
||||
return manager.DispatchAdd(ctx, namespace.Name)
|
||||
}
|
||||
|
||||
func DispatchNamespaceResync(ctx context.Context, manager NamespaceManager, namespace *corev1.Namespace, source NamespaceSource, observedAt time.Time) (NamespaceRecord, bool, error) {
|
||||
if manager == nil || namespace == nil || namespace.Name == "" {
|
||||
return NamespaceRecord{}, false, nil
|
||||
}
|
||||
manager.Upsert(NamespaceEventFromNamespace(NamespaceEventUpdate, namespace, source, observedAt))
|
||||
return manager.DispatchResync(ctx, namespace.Name)
|
||||
}
|
||||
|
||||
func RecordNamespaceRemoval(manager NamespaceManager, obj interface{}, source NamespaceSource, observedAt time.Time) (NamespaceRecord, bool) {
|
||||
if manager == nil {
|
||||
return NamespaceRecord{}, false
|
||||
}
|
||||
event := NamespaceEventFromObject(NamespaceEventRemove, obj, source, observedAt)
|
||||
if event.Name == "" {
|
||||
return NamespaceRecord{}, false
|
||||
}
|
||||
record := manager.Upsert(event)
|
||||
return record, true
|
||||
}
|
||||
|
||||
func (m *inMemoryNamespaceManager) Subscribe(subscriber NamespaceSubscriber) {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
Reference in New Issue
Block a user