diff --git a/pkg/services/dashboards/service/dashboard_service.go b/pkg/services/dashboards/service/dashboard_service.go index e59070b8c24..0f2957ee0ce 100644 --- a/pkg/services/dashboards/service/dashboard_service.go +++ b/pkg/services/dashboards/service/dashboard_service.go @@ -952,11 +952,26 @@ func (dr *DashboardServiceImpl) UnprovisionDashboard(ctx context.Context, dashbo func (dr *DashboardServiceImpl) GetDashboardsByPluginID(ctx context.Context, query *dashboards.GetDashboardsByPluginIDQuery) ([]*dashboards.Dashboard, error) { if dr.features.IsEnabledGlobally(featuremgmt.FlagKubernetesCliDashboards) { - return dr.searchDashboardsThroughK8s(ctx, &dashboards.FindPersistedDashboardsQuery{ + dashs, err := dr.searchDashboardsThroughK8s(ctx, &dashboards.FindPersistedDashboardsQuery{ OrgId: query.OrgID, ProvisionedRepo: pluginIDRepoName, ProvisionedPath: query.PluginID, }) + if err != nil { + return nil, err + } + + // search only returns the metadata, need to get the dashboard.Data too + results := make([]*dashboards.Dashboard, len(dashs)) + for i, d := range dashs { + dash, err := dr.GetDashboard(ctx, &dashboards.GetDashboardQuery{OrgID: d.OrgID, UID: d.UID}) + if err != nil { + return nil, err + } + results[i] = dash + } + + return results, nil } return dr.dashboardStore.GetDashboardsByPluginID(ctx, query) } diff --git a/pkg/services/dashboards/service/dashboard_service_test.go b/pkg/services/dashboards/service/dashboard_service_test.go index d17610fb1eb..27653a41b63 100644 --- a/pkg/services/dashboards/service/dashboard_service_test.go +++ b/pkg/services/dashboards/service/dashboard_service_test.go @@ -1020,6 +1020,15 @@ func TestGetDashboardsByPluginID(t *testing.T) { PluginID: "testing", OrgID: 1, } + uidUnstructured := &unstructured.Unstructured{Object: map[string]any{ + "metadata": map[string]any{ + "name": "uid1", + }, + "spec": map[string]any{ + "title": "Dashboard 1", + }, + }} + t.Run("Should fallback to dashboard store if Kubernetes feature flags are not enabled", func(t *testing.T) { service.features = featuremgmt.WithFeatures() fakeStore.On("GetDashboardsByPluginID", mock.Anything, mock.Anything).Return([]*dashboards.Dashboard{}, nil).Once() @@ -1030,6 +1039,7 @@ func TestGetDashboardsByPluginID(t *testing.T) { t.Run("Should use Kubernetes client if feature flags are enabled", func(t *testing.T) { ctx, k8sCliMock := setupK8sDashboardTests(service) + k8sCliMock.On("Get", mock.Anything, "uid", mock.Anything, mock.Anything).Return(uidUnstructured, nil) k8sCliMock.On("Search", mock.Anything, mock.Anything, mock.MatchedBy(func(req *resource.ResourceSearchRequest) bool { return req.Options.Fields[0].Key == "repo.name" && req.Options.Fields[0].Values[0] == "plugin" && req.Options.Fields[1].Key == "repo.path" && req.Options.Fields[1].Values[0] == "testing"