From 760353fcbd54480552beb752d62867f4a6d27e20 Mon Sep 17 00:00:00 2001 From: puretension Date: Fri, 19 Sep 2025 00:11:02 +0900 Subject: [PATCH 1/4] Add DD_DASHBOARD_FORCE_SYNC_PERIOD environment variable Fixes #2179 Signed-off-by: puretension --- .../controller/datadogdashboard/controller.go | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/internal/controller/datadogdashboard/controller.go b/internal/controller/datadogdashboard/controller.go index e4ff96fecb..58ac56c6d3 100644 --- a/internal/controller/datadogdashboard/controller.go +++ b/internal/controller/datadogdashboard/controller.go @@ -2,6 +2,8 @@ package datadogdashboard import ( "context" + "os" + "strconv" "strings" "time" @@ -28,10 +30,11 @@ import ( ) const ( - defaultRequeuePeriod = 60 * time.Second - defaultErrRequeuePeriod = 5 * time.Second - defaultForceSyncPeriod = 60 * time.Minute - datadogDashboardKind = "DatadogDashboard" + defaultRequeuePeriod = 60 * time.Second + defaultErrRequeuePeriod = 5 * time.Second + defaultForceSyncPeriod = 60 * time.Minute + datadogDashboardKind = "DatadogDashboard" + DDDashboardForceSyncPeriodEnvVar = "DD_DASHBOARD_FORCE_SYNC_PERIOD" ) type Reconciler struct { @@ -63,6 +66,18 @@ func (r *Reconciler) internalReconcile(ctx context.Context, req reconcile.Reques logger.Info("Reconciling Datadog Dashboard") now := metav1.NewTime(time.Now()) + forceSyncPeriod := defaultForceSyncPeriod + + if userForceSyncPeriod, ok := os.LookupEnv(DDDashboardForceSyncPeriodEnvVar); ok { + forceSyncPeriodInt, err := strconv.Atoi(userForceSyncPeriod) + if err != nil { + logger.Error(err, "Invalid value for dashboard force sync period. Defaulting to 60 minutes.") + } else { + logger.V(1).Info("Setting dashboard force sync period", "minutes", forceSyncPeriodInt) + forceSyncPeriod = time.Duration(forceSyncPeriodInt) * time.Minute + } + } + instance := &v1alpha1.DatadogDashboard{} var result ctrl.Result var err error @@ -106,7 +121,7 @@ func (r *Reconciler) internalReconcile(ctx context.Context, req reconcile.Reques if instanceSpecHash != statusSpecHash { logger.Info("DatadogDashboard manifest has changed") shouldUpdate = true - } else if instance.Status.LastForceSyncTime == nil || ((defaultForceSyncPeriod - now.Sub(instance.Status.LastForceSyncTime.Time)) <= 0) { + } else if instance.Status.LastForceSyncTime == nil || ((forceSyncPeriod - now.Sub(instance.Status.LastForceSyncTime.Time)) <= 0) { // Periodically force a sync with the API to ensure parity // Get Dashboard to make sure it exists before trying any updates. If it doesn't, set shouldCreate _, err = r.get(instance) From a43835b4f6c830786cd36d40283e7150dd296691 Mon Sep 17 00:00:00 2001 From: puretension Date: Fri, 19 Sep 2025 12:49:54 +0900 Subject: [PATCH 2/4] trigger CI checks after labeling and milestone Signed-off-by: puretension From d7ce92c70279562d4312e01e6362d9ebcf2bdb69 Mon Sep 17 00:00:00 2001 From: puretension Date: Fri, 17 Oct 2025 21:49:38 +0900 Subject: [PATCH 3/4] Add DD_DASHBOARD_FORCE_SYNC_PERIOD documentation --- docs/datadog_dashboard.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/datadog_dashboard.md b/docs/datadog_dashboard.md index 2e9df479e8..b922b6c8e2 100644 --- a/docs/datadog_dashboard.md +++ b/docs/datadog_dashboard.md @@ -10,6 +10,14 @@ The `DatadogDashboard` Custom Resource Definition (CRD) allows users to create [ - [Helm][2], to deploy the Datadog Operator - The [kubectl CLI][3], to install a `DatadogDashboard` +## Configuration + +### Environment Variables + +The DatadogDashboard controller supports the following environment variable: + +- `DD_DASHBOARD_FORCE_SYNC_PERIOD`: Configures the frequency at which the controller performs a force sync with the Datadog API to ensure dashboard parity. Defaults to 60 minutes if not set. Example: `DD_DASHBOARD_FORCE_SYNC_PERIOD=30m` + ## Adding a DatadogDashboard From 7781b7caacac7281edf1445db10bc7cd318f0918 Mon Sep 17 00:00:00 2001 From: puretension Date: Fri, 17 Oct 2025 21:50:17 +0900 Subject: [PATCH 4/4] Add DD_DASHBOARD_FORCE_SYNC_PERIOD documentation Signed-off-by: puretension --- docs/datadog_dashboard.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/datadog_dashboard.md b/docs/datadog_dashboard.md index b922b6c8e2..8de5e27b09 100644 --- a/docs/datadog_dashboard.md +++ b/docs/datadog_dashboard.md @@ -18,6 +18,14 @@ The DatadogDashboard controller supports the following environment variable: - `DD_DASHBOARD_FORCE_SYNC_PERIOD`: Configures the frequency at which the controller performs a force sync with the Datadog API to ensure dashboard parity. Defaults to 60 minutes if not set. Example: `DD_DASHBOARD_FORCE_SYNC_PERIOD=30m` +## Configuration + +### Environment Variables + +The DatadogDashboard controller supports the following environment variable: + +- `DD_DASHBOARD_FORCE_SYNC_PERIOD`: Configures the frequency at which the controller performs a force sync with the Datadog API to ensure dashboard parity. Defaults to 60 minutes if not set. Example: `DD_DASHBOARD_FORCE_SYNC_PERIOD=30m` + ## Adding a DatadogDashboard