2024-01-10 15:20:30 -08:00
|
|
|
package dashboard
|
|
|
|
|
|
|
|
|
|
import (
|
2024-10-17 13:18:29 +03:00
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
2024-09-26 16:26:45 +03:00
|
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
|
|
|
"k8s.io/apiserver/pkg/registry/generic"
|
|
|
|
|
"k8s.io/apiserver/pkg/registry/rest"
|
|
|
|
|
|
2024-09-04 14:53:14 +03:00
|
|
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
2024-07-17 10:49:23 -07:00
|
|
|
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic"
|
|
|
|
|
grafanarest "github.com/grafana/grafana/pkg/apiserver/rest"
|
|
|
|
|
"github.com/grafana/grafana/pkg/registry/apis/dashboard/legacy"
|
2024-10-17 13:18:29 +03:00
|
|
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
2024-07-17 10:49:23 -07:00
|
|
|
"github.com/grafana/grafana/pkg/storage/unified/apistore"
|
|
|
|
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
2024-01-10 15:20:30 -08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type dashboardStorage struct {
|
2024-09-04 14:53:14 +03:00
|
|
|
resource utils.ResourceInfo
|
2024-07-17 10:49:23 -07:00
|
|
|
access legacy.DashboardAccess
|
2024-01-10 15:20:30 -08:00
|
|
|
tableConverter rest.TableConvertor
|
|
|
|
|
|
2024-10-17 13:18:29 +03:00
|
|
|
server resource.ResourceServer
|
|
|
|
|
features featuremgmt.FeatureToggles
|
2024-01-10 15:20:30 -08:00
|
|
|
}
|
|
|
|
|
|
2024-10-17 13:18:29 +03:00
|
|
|
func (s *dashboardStorage) newStore(scheme *runtime.Scheme, defaultOptsGetter generic.RESTOptionsGetter, reg prometheus.Registerer) (grafanarest.LegacyStorage, error) {
|
2024-07-17 10:49:23 -07:00
|
|
|
server, err := resource.NewResourceServer(resource.ResourceServerOptions{
|
|
|
|
|
Backend: s.access,
|
|
|
|
|
Index: s.access,
|
2024-10-17 13:18:29 +03:00
|
|
|
Reg: reg,
|
2024-07-17 10:49:23 -07:00
|
|
|
// WriteAccess: resource.WriteAccessHooks{
|
|
|
|
|
// Folder: func(ctx context.Context, user identity.Requester, uid string) bool {
|
|
|
|
|
// // ???
|
|
|
|
|
// },
|
|
|
|
|
// },
|
|
|
|
|
})
|
2024-01-10 15:20:30 -08:00
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
2024-07-17 10:49:23 -07:00
|
|
|
s.server = server
|
2024-01-10 15:20:30 -08:00
|
|
|
|
2024-07-17 10:49:23 -07:00
|
|
|
resourceInfo := s.resource
|
2024-08-08 11:39:44 -04:00
|
|
|
defaultOpts, err := defaultOptsGetter.GetRESTOptions(resourceInfo.GroupResource(), nil)
|
2024-01-10 15:20:30 -08:00
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
2024-09-05 12:52:30 +03:00
|
|
|
client := resource.NewLocalResourceClient(server)
|
2024-07-18 07:47:47 -07:00
|
|
|
optsGetter := apistore.NewRESTOptionsGetterForClient(client,
|
|
|
|
|
defaultOpts.StorageConfig.Config,
|
2024-07-17 10:49:23 -07:00
|
|
|
)
|
2024-09-26 16:26:45 +03:00
|
|
|
return grafanaregistry.NewRegistryStore(scheme, resourceInfo, optsGetter)
|
2024-05-07 14:02:30 +01:00
|
|
|
}
|