diff --git a/plugins/logging/pkg/backend/sync.go b/plugins/logging/pkg/backend/sync.go index d6115e48ba..a9e5198850 100644 --- a/plugins/logging/pkg/backend/sync.go +++ b/plugins/logging/pkg/backend/sync.go @@ -73,9 +73,13 @@ func (b *LoggingBackend) Sync(ctx context.Context, req *node.SyncRequest) (*node b.nodeStatusMu.RLock() defer b.nodeStatusMu.RUnlock() - err = b.ClusterDriver.SetClusterStatus(ctx, id, enabled) - if err != nil { - return nil, err + if enabled { + err = b.ClusterDriver.SetClusterStatus(ctx, id, enabled) + if err != nil { + return nil, err + } + } else { + b.ClusterDriver.SetSyncTime() } var osConf *node.OpensearchConfig diff --git a/plugins/logging/pkg/gateway/drivers/cluster_driver.go b/plugins/logging/pkg/gateway/drivers/cluster_driver.go index f2410ce2fb..1dec3a12d0 100644 --- a/plugins/logging/pkg/gateway/drivers/cluster_driver.go +++ b/plugins/logging/pkg/gateway/drivers/cluster_driver.go @@ -27,6 +27,7 @@ type ClusterDriver interface { GetInstallStatus(context.Context) InstallState SetClusterStatus(context.Context, string, bool) error GetClusterStatus(context.Context, string) (*capabilityv1.NodeCapabilityStatus, error) + SetSyncTime() } var ( diff --git a/plugins/logging/pkg/gateway/drivers/kubernetes_manager.go b/plugins/logging/pkg/gateway/drivers/kubernetes_manager.go index 59739c0923..977bf1dbd4 100644 --- a/plugins/logging/pkg/gateway/drivers/kubernetes_manager.go +++ b/plugins/logging/pkg/gateway/drivers/kubernetes_manager.go @@ -29,6 +29,8 @@ import ( type KubernetesManagerDriver struct { KubernetesManagerDriverOptions + + ephemeralSyncTime time.Time } type KubernetesManagerDriverOptions struct { @@ -89,6 +91,7 @@ func NewKubernetesManagerDriver(opts ...KubernetesManagerDriverOption) (*Kuberne } return &KubernetesManagerDriver{ KubernetesManagerDriverOptions: options, + ephemeralSyncTime: time.Now(), }, nil } @@ -241,6 +244,13 @@ func (d *KubernetesManagerDriver) GetClusterStatus(ctx context.Context, id strin return nil, errors.ErrListingClustersFaled(err) } + if len(loggingClusterList.Items) == 0 { + return &capabilityv1.NodeCapabilityStatus{ + Enabled: false, + LastSync: timestamppb.New(d.ephemeralSyncTime), + }, nil + } + if len(loggingClusterList.Items) != 1 { return nil, errors.ErrInvalidList } @@ -250,3 +260,7 @@ func (d *KubernetesManagerDriver) GetClusterStatus(ctx context.Context, id strin LastSync: timestamppb.New(loggingClusterList.Items[0].Spec.LastSync.Time), }, nil } + +func (d *KubernetesManagerDriver) SetSyncTime() { + d.ephemeralSyncTime = time.Now() +}