fix(unified-storage): break dependency from dualwriter in resource module (#101788)

This commit is contained in:
Jean-Philippe Quéméner
2025-03-07 15:27:31 +01:00
committed by GitHub
parent 6a1e5dd128
commit 2e0d2f3c76
4 changed files with 26 additions and 9 deletions
+1 -1
View File
@@ -43,7 +43,7 @@ type SearchHandler struct {
}
func NewSearchHandler(tracer trace.Tracer, dual dualwrite.Service, legacyDashboardSearcher resource.ResourceIndexClient, resourceClient resource.ResourceClient, features featuremgmt.FeatureToggles) *SearchHandler {
searchClient := resource.NewSearchClient(dual, dashboardv0alpha1.DashboardResourceInfo.GroupResource(), resourceClient, legacyDashboardSearcher)
searchClient := resource.NewSearchClient(dualwrite.NewSearchAdapter(dual), dashboardv0alpha1.DashboardResourceInfo.GroupResource(), resourceClient, legacyDashboardSearcher)
return &SearchHandler{
client: searchClient,
log: log.New("grafana-apiserver.dashboards.search"),
+1 -1
View File
@@ -53,7 +53,7 @@ type k8sHandler struct {
func NewK8sHandler(dual dualwrite.Service, namespacer request.NamespaceMapper, gvr schema.GroupVersionResource,
restConfig func(context.Context) (*rest.Config, error), dashStore dashboards.Store, userSvc user.Service, resourceClient resource.ResourceClient, sorter sort.Service) K8sHandler {
legacySearcher := legacysearcher.NewDashboardSearchClient(dashStore, sorter)
searchClient := resource.NewSearchClient(dual, gvr.GroupResource(), resourceClient, legacySearcher)
searchClient := resource.NewSearchClient(dualwrite.NewSearchAdapter(dual), gvr.GroupResource(), resourceClient, legacySearcher)
return &k8sHandler{
namespacer: namespacer,
+14
View File
@@ -50,3 +50,17 @@ type Service interface {
// change the status (finish migration etc)
Update(ctx context.Context, status StorageStatus) (StorageStatus, error)
}
type SearchAdapter struct {
Service
}
func NewSearchAdapter(s Service) *SearchAdapter {
return &SearchAdapter{Service: s}
}
func (d *SearchAdapter) IsEnabled(gr schema.GroupResource) bool {
//nolint:errcheck
status, _ := d.Status(context.Background(), gr)
return status.Runtime && d.Service.ShouldManage(gr)
}
+10 -7
View File
@@ -5,13 +5,15 @@ import (
"google.golang.org/grpc"
"k8s.io/apimachinery/pkg/runtime/schema"
"github.com/grafana/grafana/pkg/storage/legacysql/dualwrite"
)
func NewSearchClient(dual dualwrite.Service, gr schema.GroupResource, unifiedClient ResourceIndexClient, legacyClient ResourceIndexClient) ResourceIndexClient {
status, _ := dual.Status(context.Background(), gr)
if status.Runtime && dual.ShouldManage(gr) {
type DualWriter interface {
IsEnabled(schema.GroupResource) bool
ReadFromUnified(context.Context, schema.GroupResource) (bool, error)
}
func NewSearchClient(dual DualWriter, gr schema.GroupResource, unifiedClient ResourceIndexClient, legacyClient ResourceIndexClient) ResourceIndexClient {
if dual.IsEnabled(gr) {
return &searchWrapper{
dual: dual,
groupResource: gr,
@@ -19,14 +21,15 @@ func NewSearchClient(dual dualwrite.Service, gr schema.GroupResource, unifiedCli
legacyClient: legacyClient,
}
}
if status.ReadUnified {
//nolint:errcheck
if ok, _ := dual.ReadFromUnified(context.Background(), gr); ok {
return unifiedClient
}
return legacyClient
}
type searchWrapper struct {
dual dualwrite.Service
dual DualWriter
groupResource schema.GroupResource
unifiedClient ResourceIndexClient