101 lines
2.4 KiB
Go
101 lines
2.4 KiB
Go
package utils
|
|
|
|
import "time"
|
|
|
|
const (
|
|
NamespacePartStateRegistering string = "registering"
|
|
NamespacePartStateActive string = "active"
|
|
NamespacePartStateFailed string = "failed"
|
|
)
|
|
|
|
type NamespacePhase string
|
|
|
|
const (
|
|
NamespacePhaseDiscovered NamespacePhase = "discovered"
|
|
NamespacePhaseRegistering NamespacePhase = "registering"
|
|
NamespacePhaseActive NamespacePhase = "active"
|
|
NamespacePhaseDeregistering NamespacePhase = "deregistering"
|
|
NamespacePhaseRemoved NamespacePhase = "removed"
|
|
NamespacePhaseFailed NamespacePhase = "failed"
|
|
)
|
|
|
|
type NamespaceSource string
|
|
|
|
const (
|
|
NamespaceSourceEnv NamespaceSource = "env"
|
|
NamespaceSourceWatcher NamespaceSource = "watcher"
|
|
NamespaceSourceBackfill NamespaceSource = "backfill"
|
|
)
|
|
|
|
type NamespaceEventType string
|
|
|
|
const (
|
|
NamespaceEventAdd NamespaceEventType = "add"
|
|
NamespaceEventUpdate NamespaceEventType = "update"
|
|
NamespaceEventRemove NamespaceEventType = "remove"
|
|
NamespaceEventResync NamespaceEventType = "resync"
|
|
)
|
|
|
|
type NamespacePartState struct {
|
|
State string
|
|
LastError string
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type NamespaceRecord struct {
|
|
Name string
|
|
Source NamespaceSource
|
|
Labels map[string]string
|
|
Phase NamespacePhase
|
|
LastError string
|
|
Generation int64
|
|
UpdatedAt time.Time
|
|
RegisteredParts map[string]NamespacePartState
|
|
}
|
|
|
|
type NamespaceEvent struct {
|
|
Type NamespaceEventType
|
|
Name string
|
|
Labels map[string]string
|
|
Source NamespaceSource
|
|
ObservedAt time.Time
|
|
}
|
|
|
|
func (nr NamespaceRecord) Clone() NamespaceRecord {
|
|
clone := nr
|
|
clone.Labels = cloneStringMap(nr.Labels)
|
|
clone.RegisteredParts = cloneNamespacePartStates(nr.RegisteredParts)
|
|
return clone
|
|
}
|
|
|
|
func (nr NamespaceRecord) IsActive() bool {
|
|
return nr.Phase == NamespacePhaseActive
|
|
}
|
|
|
|
func (nr NamespaceRecord) IsTerminal() bool {
|
|
return nr.Phase == NamespacePhaseRemoved || nr.Phase == NamespacePhaseFailed
|
|
}
|
|
|
|
func cloneStringMap(input map[string]string) map[string]string {
|
|
if input == nil {
|
|
return nil
|
|
}
|
|
|
|
clone := make(map[string]string, len(input))
|
|
for key, value := range input {
|
|
clone[key] = value
|
|
}
|
|
return clone
|
|
}
|
|
|
|
func cloneNamespacePartStates(input map[string]NamespacePartState) map[string]NamespacePartState {
|
|
if input == nil {
|
|
return nil
|
|
}
|
|
|
|
clone := make(map[string]NamespacePartState, len(input))
|
|
for key, value := range input {
|
|
clone[key] = value
|
|
}
|
|
return clone
|
|
} |