From b2af3e0962ccba62ffa68c28b6833fb2830b31ce Mon Sep 17 00:00:00 2001 From: Yonas Habteab Date: Mon, 9 Dec 2024 10:42:18 +0100 Subject: [PATCH] Enhance dependency syncs & add missing required fields --- pkg/icingadb/v1/dependency.go | 28 +++++++++++++--------------- pkg/icingadb/v1/v1.go | 9 ++++++--- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/pkg/icingadb/v1/dependency.go b/pkg/icingadb/v1/dependency.go index 9eb5f497..52316686 100644 --- a/pkg/icingadb/v1/dependency.go +++ b/pkg/icingadb/v1/dependency.go @@ -5,23 +5,13 @@ import ( "github.com/icinga/icinga-go-library/types" ) -type Dependency struct { - EntityWithoutChecksum `json:",inline"` - EnvironmentMeta `json:",inline"` - NameMeta `json:",inline"` - RedundancyGroupId types.Binary `json:"redundancy_group_id"` -} - type Redundancygroup struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` - Name string `json:"name"` DisplayName string `json:"display_name"` } // TableName implements [database.TableNamer]. -// -// Unless I am missing something, there is no way to change a type's name for the Redis, see common.SyncSubject.Name(). func (r Redundancygroup) TableName() string { return "redundancy_group" } @@ -31,6 +21,7 @@ type RedundancygroupState struct { EnvironmentMeta `json:",inline"` RedundancyGroupId types.Binary `json:"redundancy_group_id"` Failed types.Bool `json:"failed"` + IsReachable types.Bool `json:"is_reachable"` LastStateChange types.UnixMilli `json:"last_state_change"` } @@ -47,16 +38,19 @@ type DependencyNode struct { RedundancyGroupId types.Binary `json:"redundancy_group_id"` } +type DependencyEdgeState struct { + EntityWithoutChecksum `json:",inline"` + EnvironmentMeta `json:",inline"` + Failed types.Bool `json:"failed"` +} + type DependencyEdge struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` FromNodeId types.Binary `json:"from_node_id"` ToNodeId types.Binary `json:"to_node_id"` - DependencyId types.Binary `json:"dependency_id"` -} - -func NewDependency() database.Entity { - return &Dependency{} + DependencyEdgeStateId types.Binary `json:"dependency_edge_state_id"` + DisplayName string `json:"display_name"` } func NewRedundancygroup() database.Entity { @@ -71,6 +65,10 @@ func NewDependencyNode() database.Entity { return &DependencyNode{} } +func NewDependencyEdgeState() database.Entity { + return &DependencyEdgeState{} +} + func NewDependencyEdge() database.Entity { return &DependencyEdge{} } diff --git a/pkg/icingadb/v1/v1.go b/pkg/icingadb/v1/v1.go index 9e207dca..8c536ec7 100644 --- a/pkg/icingadb/v1/v1.go +++ b/pkg/icingadb/v1/v1.go @@ -4,7 +4,12 @@ import ( "github.com/icinga/icinga-go-library/database" ) -var StateFactories = []database.EntityFactoryFunc{NewHostState, NewServiceState} +var StateFactories = []database.EntityFactoryFunc{ + NewHostState, + NewServiceState, + NewDependencyEdgeState, + NewRedundancygroupState, +} var ConfigFactories = []database.EntityFactoryFunc{ NewActionUrl, @@ -51,9 +56,7 @@ var ConfigFactories = []database.EntityFactoryFunc{ NewUsergroupCustomvar, NewUsergroupMember, NewZone, - NewDependency, NewRedundancygroup, - NewRedundancygroupState, NewDependencyNode, NewDependencyEdge, }