From 996ff7d65e0a808a933250e9166997f4bdbd67c2 Mon Sep 17 00:00:00 2001 From: Stephanie Hingtgen Date: Fri, 21 Mar 2025 01:19:33 -0600 Subject: [PATCH] K8s: Fix dashboard history list timestamps (#102580) --- .../dashboardversion/dashverimpl/dashver.go | 6 +++++- .../dashboardversion/dashverimpl/dashver_test.go | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/pkg/services/dashboardversion/dashverimpl/dashver.go b/pkg/services/dashboardversion/dashverimpl/dashver.go index 31103e1821a..03b9b9ee2d9 100644 --- a/pkg/services/dashboardversion/dashverimpl/dashver.go +++ b/pkg/services/dashboardversion/dashverimpl/dashver.go @@ -308,6 +308,10 @@ func (s *Service) UnstructuredToLegacyDashboardVersion(ctx context.Context, item createdBy = updatedBy } } + created := obj.GetCreationTimestamp().Time + if updated, err := obj.GetUpdatedTimestamp(); err == nil && updated != nil { + created = *updated + } id, err := obj.GetResourceVersionInt64() if err != nil { @@ -323,7 +327,7 @@ func (s *Service) UnstructuredToLegacyDashboardVersion(ctx context.Context, item ID: id, DashboardID: obj.GetDeprecatedInternalID(), // nolint:staticcheck DashboardUID: uid, - Created: obj.GetCreationTimestamp().Time, + Created: created, CreatedBy: createdBy.ID, Message: obj.GetMessage(), RestoredFrom: restoreVer, diff --git a/pkg/services/dashboardversion/dashverimpl/dashver_test.go b/pkg/services/dashboardversion/dashverimpl/dashver_test.go index bd022a00640..1e34b144d30 100644 --- a/pkg/services/dashboardversion/dashverimpl/dashver_test.go +++ b/pkg/services/dashboardversion/dashverimpl/dashver_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "testing" + "time" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -49,8 +50,9 @@ func TestDashboardVersionService(t *testing.T) { dashboardVersionService.features = featuremgmt.WithFeatures(featuremgmt.FlagKubernetesClientDashboardsFolders) dashboardService.On("GetDashboardUIDByID", mock.Anything, mock.AnythingOfType("*dashboards.GetDashboardRefByIDQuery")).Return(&dashboards.DashboardRef{UID: "uid"}, nil) - mockCli.On("GetUserFromMeta", mock.Anything, "user:1").Return(&user.User{ID: 1}, nil) - mockCli.On("Get", mock.Anything, "uid", int64(1), v1.GetOptions{ResourceVersion: "10"}, mock.Anything).Return(&unstructured.Unstructured{ + creationTimestamp := time.Now().Add(time.Hour * -24).UTC() + updatedTimestamp := time.Now().UTC().Truncate(time.Second) + dash := &unstructured.Unstructured{ Object: map[string]any{ "metadata": map[string]any{ "name": "uid", @@ -66,7 +68,13 @@ func TestDashboardVersionService(t *testing.T) { "spec": map[string]any{ "hello": "world", }, - }}, nil).Once() + }} + dash.SetCreationTimestamp(v1.NewTime(creationTimestamp)) + obj, err := utils.MetaAccessor(dash) + require.NoError(t, err) + obj.SetUpdatedTimestamp(&updatedTimestamp) + mockCli.On("GetUserFromMeta", mock.Anything, "user:1").Return(&user.User{ID: 1}, nil) + mockCli.On("Get", mock.Anything, "uid", int64(1), v1.GetOptions{ResourceVersion: "10"}, mock.Anything).Return(dash, nil).Once() res, err := dashboardVersionService.Get(context.Background(), &dashver.GetDashboardVersionQuery{ DashboardID: 42, OrgID: 1, @@ -80,6 +88,7 @@ func TestDashboardVersionService(t *testing.T) { DashboardID: 42, DashboardUID: "uid", CreatedBy: 1, + Created: updatedTimestamp, Data: simplejson.NewFromAny(map[string]any{"uid": "uid", "version": int64(10), "hello": "world"}), })